我试图制作一个程序,将所有斐波纳契数字从0输出到你输入的数字,但是它有一个错误,我找不到它......它编译。如果有人可以告诉我我的错在哪里会很有帮助;)。它是无尽的印刷0000
#include <iostream>
int main()
{
int n,erste = 0,zweite = 1,neu = 0;
std::cout << "Enter N ";
std::cin >> n;
for( int s = 0 ;s < n; s++ )
{
if(s <= 1)
s = neu;
else{
neu = erste + zweite;
erste = zweite;
zweite = neu;
}
std::cout << neu << " ";
}}
答案 0 :(得分:4)
new = 0;
for( int s = 0 ;s < n; s++ )
if(s <= 1)
s = neu;
在每次迭代中,您都将索引设置为0.难怪循环不会结束。
根据经验,避免为for
的变量变量赋值(如果值为while
,请不要忘记更改值。)
答案 1 :(得分:1)
如果s&lt; = 1,则为s指定0。由于s被初始化为零并且是循环计数器,因此它将始终为零并且循环将是无限的。
答案 2 :(得分:0)
故障很容易辨别。我很难理解为什么你犯了错误。但无论如何这更好,至少它不会永远循环。
#include <iostream>
int main()
{
int n,erste = 0,zweite = 1,neu = 0;
std::cout << "Enter N ";
std::cin >> n;
for( int s = 0 ;s < n; s++ )
{
neu = erste + zweite;
erste = zweite;
zweite = neu;
std::cout << neu << " ";
}
}
答案 3 :(得分:0)
你在那里所做的大部分工作毫无意义。看看正确的代码:
#include <iostream>
using namespace std;
int main() {
int a = 1, b = 1, c = 1, n;
cin >> n;
cout << "1 ";
if (n >= 2)
cout << "1 ";
for (int i = 3; i <= n; ++i) {
a = b;
b = c;
c += a;
cout << c << ' ';
}
}