使用while循环计算前n个Fibonacci数的程序

时间:2011-09-29 06:33:00

标签: c++ while-loop putty fibonacci

当我运行它并输入一个数字时,它只是不停地重复它。例如,如果我放3,它会做到这一点 3 3 3 3 3 但是没有停止

int main()
{
int current=0, prev=1, prev2=1, fibnum;
cout << "Enter the number of Fibonacci numbers to compute: ";
cin >> fibnum;
if (fibnum <=0)
{
    cout << "Error: Enter a positive number: ";
}
while (fibnum > 0){
    current = prev + prev2;
    prev = prev2;
    prev2 = current;
    current++;

    cout << "," << fibnum;
    cout << endl;
}
return 0;
}

8 个答案:

答案 0 :(得分:5)

代码有几个问题:

  1. 你永远不会在循环体内向fibnum分配任何东西,所以它的值永远不会改变。
  2. current++的目的完全不明确。
  3. 基本上,您需要确定每个变量的确切含义,并始终坚持。这些变量的使用方式,明显混淆了currentfibnum的目的。

答案 1 :(得分:2)

#include <iostream>

using namespace std;

int main(){
    int current=0, prev=0, prev2=1, fibnum;
    cout << "Enter the number of Fibonacci numbers to compute: ";
    cin >> fibnum;
    if (fibnum <=0){
        cout << "Error: Enter a positive number: ";
    }
    while (fibnum--){
        cout << prev ;
        current = prev + prev2;
        prev = prev2;
        prev2 = current;
        if(fibnum)
            cout << ",";
    }
    cout << endl;
    return 0;
}

答案 2 :(得分:1)

更改为

int current_fib_num = 0;
....
while (current_fib_num++ != fibNum)
{
    ....
    // your code here
}

答案 3 :(得分:0)

您需要解决几件事。

您需要有一个计数变量;

int current=0, prev=0, prev2=1, fibnum;

int count;

....

在循环之前输出第一个数字

cout<<prev2;

您可以将其更改为for循环,以便更轻松地计算数字

for(count = 0; count <= fibnum; count++){
    current = prev + prev2;
    prev = prev2;
    prev2 = current;

你需要打印当前,而不是fibnum - &gt; fibnum是您需要打印的总数

    cout << "," << current;
}

答案 4 :(得分:0)

除了之前的答案,请注意,如果您需要使用某个数字计算fib数,则可以使用递归的好处。这样的事情:

#include <cstddef>

std::size_t fib( std::size_t num )
{
    // For first two numbers
    if (num <= 2)
        return 1;

    return fib(num - 1) + fib(num - 2);
}

但是你必须记住,这将导致冗余计算'可重复的相同数字的重新计算和堆栈用于传输函数args。

答案 5 :(得分:0)

您正在尝试打印fibnum,但它并未在while循环内更​​改。 你应该打印当前。 您还需要设置一个计数器,它将看到while循环的结束。

答案 6 :(得分:0)

#include <iostream>

using std::cin;
using std::cout;

int main()
{
  int a=1, b=1, nums_to_print;
  while (1) {
    cout << "Enter the number of Fibonacci numbers to compute: ";
    cin >> nums_to_print;
    if (nums_to_print > 0) {
      while (1) {
        cout << a;
        b += a;
        a = b - a;
        if (--nums_to_print) cout << ",";
        else break;
      }
      cout << "\n";
      return 0;
    }

    cout << "Error: Enter a positive number.\n";
  }
}

演示:http://ideone.com/3H8Fq

答案 7 :(得分:0)

#include <iostream>

using namespace std;

    int main()
    {
         int i=0,j=1;
        int c,n,count=0,d;
        cout<<"enter num";
        cin>>n;
        c=i+j;
        cout<<i<<j;
    while(count<n-2)
        {   d=j+c;
            cout<<d;
            j=c;
            c=d;
            count++;
        }
         return 0;
    }