您的位置:首页 > 其它

monthrange()、多元赋值、斐波那契数列(非递归)和汉诺塔(递归)

2016-07-17 16:49 225 查看
   某只菜鸟开始写点播客,记录一下自己的想法和一些python的用法。

   今天写了三个程序(某学习网站上的三个小测验),因为对python语法的不太熟悉,写的过程比较艰辛

  1.关于时间和日期

假设某年某月某日星期几,求某年某月最后一天星期几?

比如1800年1月1号星期三(事实上就是星期三),求2016年7月的最后一天星期几?

第一步:

calendar 模块里有一个方法monthrange可以根据年份,月份求得上个月最后一天星期几,和这个月的天数。

比如calendar.monthrange(2016,7)返回两个数字,第一个数字是上个月最后一天星期几(0-6),第二个数字这个月有多少天。

第二步:

验证一下给的星期是不是正确的:如果正确,则第一步中的两个数字相加除以7取余就得到结果;如果不正确,两数字之和再加上星期的差值除以7取余,比如实际上是星期一,给的是星期三,就两数字之和加上2在除以7取余

  2.关于斐波那契数列(非递归)

第一种:

三个变量,m0,m1,m2, 其中m0用于保存某一个值,m1,m2用于记录斐波那契数列的后两个数。

m0=m2;m2=m1+m2;m1=m0;经过n-2次循环,就可以得到第n个数。

第二种,python中可以用一种更简单的方法,多元赋值,这时,只需两个变量,m1,m2

m1,m2=m2,m1+m2

  3.汉诺塔盘子的问题(递归)

三个塔的名字分别为:起始塔、中间塔、目的塔

  分三步;

第一步:

n-1个盘子从起始塔借助目的塔移动到中间塔

第二步:

第n个盘子从起始塔移动到目的塔(一般需要打印出来)

第三步:

n-1个盘子从中间塔借助起始塔移动到目的塔
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归