# -*- coding:utf-8 -*-
def fab1(n):
if n<1:
return "错误"
elif n==1 :
return 0
elif n==2 :
return 1
elif n>2:
return fab1(n-1)+fab1(n-2)
def fab2(n):
if n<0:
return []
elif n==1:
return [0]
elif n==2:
return [0,1]
else:
fib_sequence=[0,1]
for i in range(2,n):
fib_sequence.append(fib_sequence[i-1]+fib_sequence[i-2])
return fib_sequence
if __name__=='__main__':
#测试第一个函数
a=fab1(10)
print(a)
#测试第二个函数
b=100000
fib_sequence=fab2(b)
print(fib_sequence[b-1])
第二种fab2()明显得递推表达式会好很多,运算很快,第一种python或者c都有内存优化得方式,读者可以去搜索,但是明显第二种穿透本质了,直击敌人心脏。不过递归作为一种算法是有其优势的!