2013-04-14 136 views
-2

我想計算100以下的斐波那契數列,但我所做的代碼不起作用。我有什麼是:斐波那契數列

def fib(n): 
    if n == 0: 
     return 0 
    elif n == 1: 
     return 1 
    else: 
     return fib(n-1) + fib(n-2) 
num=0 
while(num<100): 
     print (fib(num)) 
     num+=1 

我認爲這應該工作,但它沒有,所以這肯定是我的問題與我的編碼。有誰能解決這個問題嗎

+1

重複[this投稿](http://stackoverflow.com/questions/494594/how-to-write-the-fibonacci-sequence-in-python?rq=1)? – bbayles

+4

當你發佈一個問題*'它不起作用'*不是很有幫助。解釋**它如何不起作用。請注意,使用'while'循環遍歷一個數字範圍並不是特別的pythonic - 考慮[range函數](http://docs.python.org/3.3/library/functions.html#func-範圍)而不是(或2.x中的['xrange()'](http://docs.python.org/2.7/library/functions.html#xrange))。 –

+0

我看到我的錯誤。我計算的是計算的數量,而不是數字的數量。 – waco001

回答

1

那麼這段代碼不起作用呢?它看起來像實施是正確的,但它當然很慢。您可以嘗試在某種數據結構中存儲您計算的數字,以減少堆棧跟蹤,並在嘗試計算24的fib時重新計算23的fib。