python_实现_斐波那契额函数

在学递归的时候,用递归实现了一个

下面是代码

1 def fib(n):
2     if n >= 3:
3         return fib(n-1)+fib(n-2)
4     else:
5         return 1
6 print(fib(6))

发现一个很严重的问题:当数字比较小的时候还好,但是当求30以后的数字的时候,就会运行特别长的时间

所以请看下面一种方法

 1 while True:
 2     def fib(n):
 3         result = [1,1]
 4         for i in range(n-2):
 5             result.append(result[-2]+result[-1])
 6         return result[-1]
 7 
 8 
 9     n = input('你想知道第多少个斐波那契数:')
10     if n == 'q':
11         break
12     else:
13         n = int(n)
14         print('result = %d'%(fib(n)))

发现速度提升特别大,求第1000个数都可以,牛!

posted @ 2016-09-13 00:34  timtike  阅读(2005)  评论(0编辑  收藏  举报