-6
#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;
}

我很混乱??:(

4

3 回答 3

12

斐波那契数列 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 时停止。

由你来实现它,并确保你理解它是如何工作的。

于 2010-02-05T22:37:57.613 回答
1

首先,您应该检查您是否了解斐波那契数列的定义。

根据定义,前两个斐波那契数是 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;
}
于 2010-02-05T22:37:08.463 回答
0

如果您想要一个提示,谷歌“递归”。

如果你想要答案,谷歌“recursion fibonacci C++”,但请尝试用上面的提示来解决它:) 这是值得的。

于 2010-02-05T22:36:36.593 回答