我有這樣的代碼斐波那契序列式查詢
for(int Variable=2; Variable<N; Variable++)
{
Answer = b + c;
b = c;
c = Answer;
}
而且它適用於所有我的其他代碼時,計算答案。然而,上面的代碼我不明白它是如何工作的....只是尋找解釋如何給出正確的答案。謝謝!
我有這樣的代碼斐波那契序列式查詢
for(int Variable=2; Variable<N; Variable++)
{
Answer = b + c;
b = c;
c = Answer;
}
而且它適用於所有我的其他代碼時,計算答案。然而,上面的代碼我不明白它是如何工作的....只是尋找解釋如何給出正確的答案。謝謝!
首先,你必須明白,斐波那契數列看起來是什麼樣以及它是如何構建的。我不會在這裏討論它,在互聯網上尋找它。然後嘗試在每張循環的步驟中在一張紙上寫下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.
}
謝謝,我現在就明白了。我只是沒有得到b和c的值如何改變,如果我上面宣佈; unsigned long long b = 1,c = 1,Answer; 只是不知道如何b和c值不斷變化,取決於N. – Craig 2013-03-04 12:40:48
嘗試更清楚地問問題。我無法得到,從一開始你的問題實際上是什麼。 – Spook 2013-03-04 12:46:46
啊謝謝!這就說得通了!對不起,完全新手,剛剛開始,所以不知道發生了什麼事。這是我對基本知識的理解; unsigned long long - 確保限制是正確的,即在處理大數值時答案不會變成錯誤/負數 變量++ - 增量,最大值爲N? 變量= 2 - 由於前兩個聲明的值爲1,需要從下面的值開始,高於 它只是變量
也許以下將有所幫助。由於代碼在Fibonacci數字上進行迭代,所以c
是最近的數字,b
是之前的數字。
但是如果上面我聲明, 「unsigned long long b = 1,c = 1,Answer;」 這是如何工作的? – Craig 2013-03-04 12:34:26
爲什麼不寫下那個循環爲例如N = 5? – 2013-03-04 12:29:08
我不知道你的意思,我測試過程序,它的工作原理。只是不明白如何。正如我之前宣佈的那樣,b = 1和c = 1。 不要讓這部分變量爲「變量
Craig
2013-03-04 12:33:24
@Craig如果這是您沒有得到的部分,您需要快速選擇一本介紹性的C++書* *。 – us2012 2013-03-04 12:36:12