求第N个斐波那契数
1 1 2 3 5 8 ……
方法一:
def fbnq(n): if n==1 or n==2: #第一个数和第二个数是1,如果想从另外的开始,比如1,2,就需要自定义n==1时return 1 ,n==2时return 2 return 1 else: return fbnq(n-1)+fbnq(n-2) #这里一定要返回 n=int(input("你想求第几个斐波那契数?—— ")) f=fbnq(n) print(f)
#此时需要两个递归,不太适合内存较小的情况
方法二:
def fbnq2(n,l=[0]): l[0]+=1 if n==2: l[0]-=1 return 1,1 else: a,b=fbnq2(n-1) l[0]-=1 #n减到2的时候,l[0]=-n+1,慢慢回归,直到l[0]==0时,返回的就是一个值,而不是(a,a+b) if l[0]==0: return a+b return b,a+b n=int(input("你想求第几个斐波那契数?—— ")) f=fbnq2(n) print(f)
#此时比较完美,可以很轻松地计算比较大的斐波那契数