#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 时停止。
由你来实现它,并确保你理解它是如何工作的。
首先,您应该检查您是否了解斐波那契数列的定义。
根据定义,前两个斐波那契数是 0 和 1,其余的每个数都是前两个数的和。一些来源省略了最初的 0,而是以两个 1 开始序列。
您需要两个变量来记住状态,而不仅仅是您尝试做的一个。而且你不乘以二,你只需将两个变量相加。
#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;
}
如果您想要一个提示,谷歌“递归”。
如果你想要答案,谷歌“recursion fibonacci C++”,但请尝试用上面的提示来解决它:) 这是值得的。