斐波纳契数从0到n

时间:2013-10-12 15:22:43

标签: c++ fibonacci

我试图制作一个程序,将所有斐波纳契数字从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 个答案:

答案 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 << ' ';
    }
}