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

下面是代码

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个数都可以,牛!

相关文章:

  • 2021-12-30
  • 2022-12-23
  • 2021-09-03
  • 2021-10-02
  • 2022-01-21
  • 2021-10-10
  • 2021-06-09
猜你喜欢
  • 2022-12-23
  • 2022-01-18
  • 2021-10-31
  • 2021-12-08
  • 2022-12-23
相关资源
相似解决方案