python编写递归函数和非递归函数、输出斐波那契数列_python 入门之斐波那契数列递归表达式算法和非递归算法...
題目:?斐波那契數列是一組有規律的數列:1,1,2,3,5,8,13,……..,那么我們怎么用python 來完成此算法,并求出第200位的值是多少
1.python 遞歸表達式實現:
def fib(n):
return 1 and n <= 2 or fib(n - 1) +fib(n - 2)
print('\n 最終結果為 %d'%(fib(200)))
但是運行了快1分鐘沒出結果。。。。。。。。。。。。。。。
2.非遞歸算法實現:
def countfib(n):
last=1
now=1
fibnext=1
for i in range(n):
if i<2:
fibnext=1
else:
fibnext=last+now
last=now
now=fibnext
return fibnext
print('\n 最終結果為 %d'%(countfib(200)))
或者:fib=lambda n,x=0,y=1:x if not n else fib(n-1,y,x+y)
這兩種算法計算速度簡直飛速!
4.最后的結果為:280571172992510140037611932413038677189525
5.總結為什么使用遞歸方式實現算法很長時間算不出來的原因:
(1)遞歸算法時間復雜度為:O(2^N)—-太耗時間
(2)非遞歸算法時間和空間復雜度都為:O(N)
總結
以上是生活随笔為你收集整理的python编写递归函数和非递归函数、输出斐波那契数列_python 入门之斐波那契数列递归表达式算法和非递归算法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蔡崇信回应阿里云暂停分拆:大环境发生变化
- 下一篇: 追波交互动效合集(二)