#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;
}
我很困惑? :(
答案 0 :(得分:12)
Fibonacci序列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时停止。
由您来实施,并确保您了解它的工作原理。
答案 1 :(得分:1)
首先,您应该检查您是否理解Fibonacci numbers的定义。
根据定义,前两个斐波纳契数是0和1,每个剩余数是前两个的总和。一些来源省略了初始0,而是以两个1开始序列。
你需要两个变量来记住状态,而不仅仅是你想要做的一个变量。而且你不要乘以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;
}
答案 2 :(得分:0)
如果你想要一个提示,谷歌“递归”。
如果您想要答案,谷歌“递归斐波那契C ++”,但请尝试用上面的提示来解决它:)这是值得的。