10_python_练习题——兔子问题与斐波那契數列
来源:互联网 发布:奇虎软件怎么样 编辑:程序博客网 时间:2024/05/21 08:42
#题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
#假如兔子都不死,问每个月的兔子总数为多少?
结果:
如果使用这种方法,直接在 fab 函数中用 print 打印数字会导致该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列。
要提高 fab 函数的可复用性,最好不要直接打印出数列,而是返回一个 List。
但是如果使用List, 当传进来的参数过大的时候, 会占用许多内存。
我们既想代码简单,又想占用内容小, 就需要使用迭代器了
也就是说将函数中的打印语句 换成 yield 语句, 以迭代器的形式来完成
#假如兔子都不死,问每个月的兔子总数为多少?
#通过数学分析我们知道,兔子的规律为数列1,1,2,3,5,8,13,21....
#程序分析:因此只需要按照数学的规律来进行计算就OK了
# _*_ coding:utf-8 _*_def count1(n): last1, now1 = 1 next1 = 1 for i in range(n): if i < 2 : next1 = 1 else: next1 = last1+now1 last1=now1 now1=next1 print next1, return next1print '\n最终结果是%d' % (count1(6))
然后我们发现这个问题,这个数字规律很熟悉,这正是 斐波那契数列
类似的方式输出斐波那契數列前 N 个数# _*_ coding:utf-8 _*_def fab(max): n, a, b = 0, 0, 1 while n < max: print b , a, b = b, a + b n = n + 1fab(8)
结果:
=============================>>> 1 1 2 3 5 8 13 21>>>
如果使用这种方法,直接在 fab 函数中用 print 打印数字会导致该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列。
要提高 fab 函数的可复用性,最好不要直接打印出数列,而是返回一个 List。
但是如果使用List, 当传进来的参数过大的时候, 会占用许多内存。
我们既想代码简单,又想占用内容小, 就需要使用迭代器了
# _*_ coding:utf-8 _*_def fab(max): n, a, b = 0, 0, 1 while n < max: yield b # print b a, b = b, a + b n = n + 1for i in fab(6): print i,
也就是说将函数中的打印语句 换成 yield 语句, 以迭代器的形式来完成
1 0
- 10_python_练习题——兔子问题与斐波那契數列
- 02_python_练习题——图形界面
- 03_python_练习题——排列组合
- 04_python_练习题——企业利润
- 05_python_练习题——平方数
- 07_python_练习题——数值排序
- 08_python_练习题——乘法表
- 15_python_练习题——打印日历
- 14_python_练习题——excel操作
- 斐波那契数列(Fabonacci)兔子练习题
- 算法:斐波那契兔子问题
- 斐波那契兔子问题详解
- 斐波那契数 兔子问题
- 兔子问题(斐波那契数列)
- 兔子问题--斐波那契数列
- 斐波那契数列:兔子问题
- 06_python_练习题——查找一年之中第几天
- 09_python_练习题——暂停一秒
- C++基础知识实例
- Thinkphp3.2.3 ----后台----无限极分类
- 应用数据静态化架构高性能单页Web应用
- TCP的滑动窗口与拥塞窗口
- 移动端的div拖拽
- 10_python_练习题——兔子问题与斐波那契數列
- 51nod 1402 最大值 【-.-思维??--】
- sky3888a Creature from the Black Lagoon Slot Game
- vue声明式渲染
- HDU2732Leapin' Lizards(最大流+拆点)
- CUDA编程
- 浅谈CSS中position、display、overflow、float、margin合并等几种特性的叠加关系
- opencv3.1 svm(支持向量机)使用心得
- Android下生成xml的方式