我試圖打印Fibonacci序列,並且在第600個術語後總是返回一個溢出錯誤。錯誤34,結果太大
def fib():
import math
from math import sqrt
print "\nFibonacci Sequence up to the term of what?"
n=raw_input(prompt)
if n.isdigit():
if int(n)==0:
return 0
elif int(n)==1:
return 1
else:
n_count=2
print "\n0\n1"
while n_count<int(n):
fib=int(((1+sqrt(5))**n_count-(1-sqrt(5))**n_count)/(2**n_count*sqrt(5)))
print fib
n_count+=1
fib()
else:
print "\nPlease enter a number."
fib()
fib()
當我運行此:
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
fib()
File "<pyshell#20>", line 15, in fib
fib=int(((1+sqrt(5))**n_count-(1-sqrt(5))**n_count)/(2**n_count*sqrt(5)))
OverflowError: (34, 'Result too large')
請注意,這實際上不會打印斐波那契序列,它會打印出一個粗略的斐波那契序列的近似值 - 它會以打印實際序列效率較低的方式進行打印。那真的是你想要的嗎? – abarnert 2014-10-21 22:33:00
此外,由於您使用遞歸僞造了一個循環,而不是僅使用循環,所以一旦解決了這個問題,您將在第1000次嘗試打印斐波那契數時發生'RecursionError'。 – abarnert 2014-10-21 22:33:28