当我运行它并输入一个数字时,它只是不停地重复它。例如,如果我放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;
}
答案 0 :(得分:5)
代码有几个问题:
fibnum
分配任何东西,所以它的值永远不会改变。current++
的目的完全不明确。基本上,您需要确定每个变量的确切含义,并始终坚持。这些变量的使用方式,明显混淆了current
和fibnum
的目的。
答案 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";
}
}
答案 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;
}