python实现斐波拉契数列的看法
来源:互联网 发布:阿里云虚拟 编辑:程序博客网 时间:2024/06/06 14:29
最近由于有算法的课程,自己动手用 python写了几个小的算法,今天先说下第一个Fibonacci(斐波拉契数列)。
废话不多说先给大家看源码。
import timeitstart = timeit.default_timer()#查找溢出大小def fib(): n, a, b, c = 0, 1, 1, 2 while a < 2147483647: (a,b) = (b,c) (c,n) = (a+b,n+1) print(n) print("溢出大小为:"+ str(n)) return "done"print(fib())end = timeit.default_timer()print("消耗时间为: " + str(end-start))#溢出大小的时间start1 = timeit.default_timer()def findfibs(max): q,w,e = 1,1,2 m = 0 while m < max - 1: (q,w) = (w,e) (e,m) = (q+w,m+1) print(q) return "done"print(findfibs(46))end1 = timeit.default_timer()print("溢出时间为:" + str(end1 - start1))#递归求斐波数def maxfib(l): if l == 0 : return l elif l <= 2: return 1 return maxfib(l-1) + maxfib(l-2)print("最大fibo数为:" + str(maxfib(10)))先说第一个fib()这个函数,应该很容易看出来它的功能,计算当第几个数的时候会发生溢出,并且计算时间。
先说时间吧,有些朋友不太会用一些库,http://www.jb51.net/article/108778.htm推荐这个大神写的。
程序执行时间=cpu时间 + io时间 + 休眠或者等待时间。这句话很重要,虽然这个程序运行时间很短,对于io时间或休眠时间需求很短或者不需要,但是程序要是考虑精确时间的话,还是有细微的差距的。后面我还会写一个线程计时的程序给大家看。
说完了时间,其实我在刚开始写的时候是有bug的,bug在那里呢?
a < 2147483647:
python是不会溢出的:
在python2.7中,表示整数的有int和long两个类型。int类型和C++的int类似,都是一个固定位数的数;long则是一个理论上可以存储无限大数的数据类型。当你的数大到可能溢出时,python就会机智的帮你转换成long,这样就避免了溢出。而python3之后整数只有一个可以放任意大数的int了。可是无论哪种,都是采用了特殊的方法实现了不会溢出的大整数。
作者:知乎用户
链接:https://www.zhihu.com/question/28232557/answer/40535953
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
一开始我一门心思的想去看看这个数到底多大,一个搞cpp的同学,不到一秒就知道了。。。。
我还要等好久。。。
后来越等越纳闷,数列都好几百万了,
后来查了一下,才发现这个。。。
细心的人会发现为什么是2147483647
这是是我给他设的边界
32位操作系统中的整数最大值。
下面说第二个
第二个函数是求到第46个的时候需要多少时间,其余不多解释。
下面说第三个
用递归求fibo数,递归是一个很普通的。
我有一些学弟很不理解递归,在我的理解来看就是:
自己解决自己
这句话怎么理解呢
我看了下知乎上对递归的理解
知乎真的是人才的海洋
递归的话,就一句话,递归太深,堆栈溢出,每一次解决这个问题就要有一个堆栈,就像我在我的程序中写到的,如果你要解决3,就要把这个3拆成1.2,继续调用这个方法。
才疏学浅,希望指点
阅读全文
1 0
- python实现斐波拉契数列的看法
- 斐波拉契数列的python多种完美实现
- 斐波拉契数列(Fibonacci)的Python实现
- 用Python实现斐波拉契数列
- python学习的看法
- Python实现简单的斐波拉切数列计算
- python 实现Fibonacci数列
- 斐波拉切数列(python实现)
- 斐波拉契数列不一样的实现
- python中生成斐波拉契数列的方法
- Python实现PAT1030 完美数列
- Python实现一个简易的斐波那契数列
- python递归式的实现斐波那契数列
- 斐波那契数列的实现(Python)
- python用迭代器的方式实现斐波那契数列
- python------斐波拉契数列
- python 斐波拉契数列
- Fibonacci数列的实现
- Golang语法的踩坑总结(持续更新中)
- 通过uwsgi和nginx部署django项目
- I can 前端-06 静态网页到动态网页的过渡
- 鼠标拖动圆运动
- Java环境搭建
- python实现斐波拉契数列的看法
- CSS锚点
- Python 3.6 模块安装“error: Microsoft Visual C++ 14.0 is required...”问题解决
- tensorflow实践系列 -- 线性规划 (batch and stochastic)
- 解决Chrome表单文本框自动填充黄色背景色的黑科技
- 【异常】关于使用ES的RestHighLevel JavaAPI执行search操作时,参数的问题
- JVM必知必会(四)【收集器选择,G1】
- jQ传统轮播图
- mybatis中的resulitMap配置