2013-03-04 104 views
-3

我有這樣的代碼斐波那契序列式查詢

for(int Variable=2; Variable<N; Variable++) 
{ 
    Answer = b + c; 
    b = c; 
    c = Answer; 
} 

而且它適用於所有我的其他代碼時,計算答案。然而,上面的代碼我不明白它是如何工作的....只是尋找解釋如何給出正確的答案。謝謝!

+1

爲什麼不寫下那個循環爲例如N = 5? – 2013-03-04 12:29:08

+0

我不知道你的意思,我測試過程序,它的工作原理。只是不明白如何。正如我之前宣佈的那樣,b = 1和c = 1。 不要讓這部分變量爲「變量 Craig 2013-03-04 12:33:24

+1

@Craig如果這是您沒有得到的部分,您需要快速選擇一本介紹性的C++書* *。 – us2012 2013-03-04 12:36:12

回答

0

首先,你必須明白,斐波那契數列看起來是什麼樣以及它是如何構建的。我不會在這裏討論它,在互聯網上尋找它。然後嘗試在每張循環的步驟中在一張紙上寫下Answer,b和c的值,例如。

Variable | Answer b c 
---------+------------- 
(before) | 1  1 1 
     2 | 2  1 2 
     3 | 3  2 3 
     4 | 5  3 5 

...等等。

然後尋找這個「紙調試」的值與Fibonacci序列定義的相似之處,並且所有的都應該變得清楚。


編輯:

我明白了,您有了解變量的作用域的問題?如果在由{}大括號表示的代碼塊中聲明變量,則在該塊內的任何位置都可以看到和修改該變量。

{  
    { 
     int b = 1, c = 1, Answer = 0; 
     for(int Variable=2; Variable<N; Variable++) 
     { 
      // The b and c variables are visible here 
      // and can be both read and written. 

      Answer = b + c; 
      b = c; 
      c = Answer; 
     } 
    } 

    // However, they are no longer visible here. 
} 
+0

謝謝,我現在就明白了。我只是沒有得到b和c的值如何改變,如果我上面宣佈; unsigned long long b = 1,c = 1,Answer; 只是不知道如何b和c值不斷變化,取決於N. – Craig 2013-03-04 12:40:48

+0

嘗試更清楚地問問題。我無法得到,從一開始你的問題實際上是什麼。 – Spook 2013-03-04 12:46:46

+0

啊謝謝!這就說得通了!對不起,完全新手,剛剛開始,所以不知道發生了什麼事。這是我對基本知識的理解; unsigned long long - 確保限制是正確的,即在處理大數值時答案不會變成錯誤/負數 變量++ - 增量,最大值爲N? 變量= 2 - 由於前兩個聲明的值爲1,需要從下面的值開始,高於 它只是變量 Craig 2013-03-04 12:50:02

0

也許以下將有所幫助。由於代碼在Fibonacci數字上進行迭代,所以c是最近的數字,b是之前的數字。

+0

但是如果上面我聲明, 「unsigned long long b = 1,c = 1,Answer;」 這是如何工作的? – Craig 2013-03-04 12:34:26