python 中斐波那契数列的那些事
2016-04-03 00:00
429 查看
# 问题分析 # 斐波那契数列 用 递归实现会产生大量的重复的子序列 # fib(3)= fib(2) + fib(1) = fib(1) + fib(0) + fib(1) 逐次递归 # 如何避免不算重复的子序列?
memo = {0:0, 1:1} def fib(n): if n not in memo: memo = fib(n-1)+fib(n-2) return memo
[fib(i) for i in range(10)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
感悟: 1.字典也可以迭代 2.字典迭代出的值是key 3.取字典的值用dict[key] 记住key 应该被【】列表包围 4.if not varible in memo: if 不仅可以用 判断在里面 还以用来判断不在里面
# 问题: 还有无其他解法
def fib1(n): a, b = 0, 1 for i in range(n): a, b = b, a+b return a
感悟: 1.原来的两个数字a,b,用新的两个数字去替换 2.a <----b 3.b <----a + b 4.交换两个数字 a,b = b ,a 5.返回值 <----- a
[fib1(i) for i in range(10)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
相关文章推荐
- python快速排序
- Python 模块动态加载技术
- Python2.6.6执行selenium自动化
- TensorFlow 简明教程(python版)
- Python producer & consumer model
- Python multiprocessing threading
- python爬取某个贴吧帖子留下的邮箱,并自动发送相应链接
- python 安装第三方插件
- python自动发送邮件
- python获得路径和子路径下所有的文件的相关信息
- python抓取东方财富网股票的公告的里面的链接
- Python中单引号,双引号,三引号的区别
- Python Thread
- python中的编码问题unicode, encode, decode
- Python 基础 —— time(时间,日期)
- 最新最全python 镜像源
- 体验VS2015 Update 2 的 Android 和 Python
- python re正则表达式
- 最新用python来操作mysql完全解析
- Python queue