python学习第四周:函数与递归函数·作业20141224
2014-12-24 01:33
519 查看
1编写程序,完成下列题目:(1分)
题目内容:一个斐波那契数列的前10项为:1, 2, 3, 5, 8, 13, 21, 34, 55, 89,对于一个最大项的值不超过n的斐波那契数列,求值为偶数的项的和。
输入格式:
一个正整数n,如100。
输出格式:
值为偶数的项的和,如 2 + 8 + 34 = 44。
输入样例:
100
输出样例:
44
时间限制:500ms内存限制:32000kb
说明:由于斐波那契数列函数属于递归调用,有很多重复的计算在里面,计算使用的时间比较多,在测试平台上测试超时,因此自己改写了下,通过循环来进行计算。
斐波那契数列函数:
自定义函数:
2
编写程序,完成下列题目:(2分)
题目内容:若已知1800年1月1日为星期3,则对于一个给定的年份和月份,输出这个月的最后一天是星期几。
输入格式:
两行整数,分别代表年份和月份
输出格式:
星期数,0代表星期日
输入样例:
203312
输出样例:
6
时间限制:500ms内存限制:32000kb
3
编写程序,完成下列题目:(2分)
题目内容:如在汉诺塔游戏中,我们希望将塔A上的n个盘子,通过塔B移动到塔C,则对于任意输入的n,给出移动的步骤。
输入格式:
一个正整数n
输出格式:
移动的步骤
输入样例:
2
输出样例:
Move 1 from A to BMove 2 from A to CMove 1 from B to C
时间限制:500ms内存限制:32000kb
本文出自 “运维者说:从菜鸟到老鸟” 博客,请务必保留此出处http://liuqunying.blog.51cto.com/3984207/1594167
题目内容:一个斐波那契数列的前10项为:1, 2, 3, 5, 8, 13, 21, 34, 55, 89,对于一个最大项的值不超过n的斐波那契数列,求值为偶数的项的和。
输入格式:
一个正整数n,如100。
输出格式:
值为偶数的项的和,如 2 + 8 + 34 = 44。
输入样例:
100
输出样例:
44
时间限制:500ms内存限制:32000kb
说明:由于斐波那契数列函数属于递归调用,有很多重复的计算在里面,计算使用的时间比较多,在测试平台上测试超时,因此自己改写了下,通过循环来进行计算。
斐波那契数列函数:
def fib(n): if n == 0 or n == 1: return 1 else: return fib(n - 1) + fib(n - 2) sum = 0 i = 0 num = int(raw_input()) while fib(i) < num: if fib(i) % 2 == 0: sum += fib(i) i += 1 print sum
自定义函数:
def fib_qiujie(n): result = 0 sum = 0 i = 0 tmp1 = 0 tmp2 = 0 while result < n: if i ==0 or i == 1: tmp1 = 1 tmp2 = 1 result = 1 elif i > 1: if result % 2 == 0: sum += result result = tmp2 +tmp1 tmp1 = tmp2 tmp2 = result i += 1 print sum num = int(raw_input()) fib_qiujie(num)
2
编写程序,完成下列题目:(2分)
题目内容:若已知1800年1月1日为星期3,则对于一个给定的年份和月份,输出这个月的最后一天是星期几。
输入格式:
两行整数,分别代表年份和月份
输出格式:
星期数,0代表星期日
输入样例:
203312
输出样例:
6
时间限制:500ms内存限制:32000kb
def is_leap_year(Year): if Year % 4 == 0 and Year % 100 != 0 or Year % 400 == 0: return True else: return False def year_month_days(Year, Month): if Month in (1, 3, 5, 7, 8, 10, 12): return 31 elif Month in (4, 6, 9, 11): return 30 elif is_leap_year(Year): return 29 else: return 28 def year_days(Year): if is_leap_year(Year): return 366 else: return 365 def weekday_year_month(Year, Month): Weekday = 2 for year in range(1800, Year): Weekday = (Weekday + year_days(year) ) % 7 for month in range(1, Month + 1): Weekday = (Weekday + year_month_days(Year, month)) % 7 print Weekday Y = int(raw_input()) M = int(raw_input()) weekday_year_month(Y, M)
3
编写程序,完成下列题目:(2分)
题目内容:如在汉诺塔游戏中,我们希望将塔A上的n个盘子,通过塔B移动到塔C,则对于任意输入的n,给出移动的步骤。
输入格式:
一个正整数n
输出格式:
移动的步骤
输入样例:
2
输出样例:
Move 1 from A to BMove 2 from A to CMove 1 from B to C
时间限制:500ms内存限制:32000kb
def hanoi(n, A, B, C): if n == 1: print 'Move', n, 'from', A, 'to', C else: hanoi(n - 1, A, C, B) print 'Move', n, 'from', A, 'to', C hanoi(n - 1, B, A, C) num = int(raw_input()) hanoi(num, 'A', 'B', 'C')
本文出自 “运维者说:从菜鸟到老鸟” 博客,请务必保留此出处http://liuqunying.blog.51cto.com/3984207/1594167
相关文章推荐
- Python学习第四周第二次作业——函数
- Python第四周:函数与递归函数
- Python学习第四周第一次作业——用户输入和while循环
- Python教程学习简记2--Python 函数调用 定义函数 函数的参数 递归函数
- python学习--函数(调用函数、定义函数、递归函数)
- 廖雪峰网站:学习python函数—递归函数(四)
- Dive Into Python 学习记录3-getattr 介绍/过滤列表/and or/lambda 函数
- Python学习:def函数的定义、使用及参数传递
- 我的python学习之路----函数
- Python学习(五) -- 函数
- Dive Into Python 学习记录1-函数/模块导入/字典/列表/元组/字符串分割、连接、格式化/映射list/
- python学习--使用 lambda 函数
- python学习之模块函数
- Python 学习笔记:需要仔细阅读一个函数
- Learn Python The Hard Way学习(21) - 函数可以返回信息
- Learn Python The Hard Way学习(35) - 分支和函数
- Python模块学习之os常用函数
- python学习--函数使用
- Python函数学习笔记
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用