#include <iostream>
using namespace std;
void main()
{
int i = 0;
while (i < 1000)
{
int TEMP = i * 2;
cout << i << endl;
TEMP = i;
i = i +1;
// ???
}
return;
}
私は困惑している??:(
フィボナッチ数列FはF(n) = F(n - 1) + F(n - 2), F(0) = 0, F(1) = 1
です。
これがいくつかの疑似コードです:
Start Counter1 at 0
Start Counter2 at 1.
For i = 0 to 1000
New value = Counter1 + Counter2
Print new value
Counter2 = Counter1
Counter1 = New Value
End For
これは0または1を出力しません。F(2)から始まります。最初に0と1を印刷するだけで、これを簡単に修正できます。また、このコードは最初の1000個の数値を出力します。これを次While Counter1 < 1000
のように変更すると、1000に到達または通過したときに停止します。
それを実装するのはあなた次第であり、それがどのように機能するかを確実に理解するようにしてください。
まず、フィボナッチ数の定義を理解していることを確認する必要があります。
定義上、最初の2つのフィボナッチ数は0と1であり、残りの各数は前の2つの合計です。一部のソースでは、最初の0を省略し、代わりに2つの1でシーケンスを開始します。
状態を記憶するには、しようとしていた1つだけでなく、2つの変数が必要です。そして、2を掛けるのではなく、2つの変数を追加するだけです。
#include <iostream>
using namespace std;
int main()
{
int i = 0;
int j = 1;
while (i < 1000)
{
/* Print a number. */
cout << i << endl;
/* Set j to the sum of i and j, and i to the old value of j. */
int TEMP = j;
j += i;
i = TEMP;
}
return 0;
}
ヒントが必要な場合は、Googleの「再帰」。
答えが必要な場合は、Googleの「再帰フィボナッチC ++」ですが、上記のヒントを参考にしてください:)それだけの価値があります。