-8

我试图制作一个程序,将所有斐波那契数字从 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 << "  ";

  }}
4

4 回答 4

4
new = 0;
for( int s = 0 ;s < n; s++ )
  if(s <= 1)
    s = neu;

在每次迭代中,您都将索引设置为 0。难怪循环不会结束。

根据经验,避免为 a 的变体变量赋值for(不过,如果它是 a ,请不要忘记更改值while)。

于 2013-10-12T15:27:10.917 回答
1

如果 s <= 1,则将 0 分配给 s。由于 s 初始化为零并且是循环计数器,因此它将始终为零并且循环将是无限的。

于 2013-10-12T15:28:21.230 回答
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 << "  ";

  }
}
于 2013-10-12T15:34:18.397 回答
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 << ' ';
    }
}
于 2013-10-12T15:39:21.720 回答