def Fibonacci(n):
if n <= 0:
return 0
if n == 1:
return 1
return Fibonacci(n-1) + Fibonacci(n)
存在问题:计算过程中很多节点是重复的,而且重复的节点数会随着n的增大而急剧增加,时间复杂度是以n的指数的方式递增的。
改进:
最简单的方法是从头往后去计算:
def Fibonacci(n):
result = [0,1]
if(n<2):
return result[n]
fibOne = 0
fibTwo = 1
fibN = 0
for i in range(2,n+1):
fibN = fibOne + fibTwo
fibOne = fibTwo
fibTwo = fibN
return fibN