Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。(python)

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

刚开始做

def svd(n):
    if(n==1):
    		return 1    
    elif(n==2):        
    		return 1    
 	else:         
 		return svd(n-1)%10007+svd(n-2)%10007				
n=int(input())
print(svd(n))

运行测试后,发现这样会超时因为使用迭代,数值太大,内存会不够所以用列表来存储

a=[]
a.append(1)
a.append(1)
n=int(input())
f=n-1
for i in range(2,n):
    a.append((a[i-1]+a[i-2])%10007)
print(a[f])

你可能感兴趣的:(蓝桥杯)