我怎么做1000以下的斐波纳契序列?

时间:2010-02-05 22:32:24

标签: c++ fibonacci

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

我很困惑? :(

3 个答案:

答案 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 ++”,但请尝试用上面的提示来解决它:)这是值得的。