我应该如何修复这段代码,其中我需要打印斐波那契系列中的前 n 个数字?(C++)

How should I fix this code wherein I need to print the first n numbers in the Fibonacci Series?(C++)

这个特定的代码是在 Android 上用 Dcoder 制作的... 我的问题是,如果我对 n 的输入小于 6,我如何仍然能够执行它..(条件 i>=6 不满足 for 循环的权利..)同样使用这段代码我总是得到答案1,2,3,5,8... 并且打印的项数总是多于 n..

的输入

我也试过输入 i<=0 但我得到了相同的结果...

#include <iostream>
using namespace std;


int a=0,b=1,x,i,n;
int main()
{   
    cout<<"This Program Gives You The List Of First 'n' Fibonacci Numbers:"<<endl
        <<"Enter The Value Of 'n':"<<endl;
    cin>>n;
    if(n<1)
    {
      cout<<"Invalid Input"<<endl<<"Please Restart This Program And Enter A Natural Number."<<endl;
    }
    else
    {
    cout<<"The First "<<n<<" Fibonacci Numbers Are:"<<endl;
   
    for(i;i>=6,i<=n;i++)
    {
       x=a+b;
       a=b;
       b=x;
       cout<<x<<endl;
    }
    }
     
    return 0;
}

但令人惊讶的是下面的代码有效..为什么?除了我在第二个代码中故意打印 0 和 1 之外,两者之间的根本区别是什么......?当我在我的 For 循环中使用 post 增量和预增量时,我也没有发现任何区别。 .Why?此外,获得一些与 post 和 pre increment...

行为不同的示例真的很有帮助
#include <iostream>
using namespace std;


int a=0,b=1,x,i,n;
int main()
{   
    cout<<"This Program Gives You The List Of First 'n' Fibonacci Numbers:"<<endl
        <<"Enter The Value Of 'n':"<<endl;
    cin>>n;
    if(n<1)
    {
      cout<<"Invalid Input"<<endl<<"Please Restart This Program And Enter A Natural Number."<<endl;
    }
    else
    {
    cout<<"The First "<<n<<" Fibonacci Numbers Are:"<<endl;
    cout<<"0"<<endl<<"1"<<endl;
    for(i;i>=0,i<=n-2;i++)
    {
       x=a+b;
       a=b;
       b=x;
       cout<<x<<endl;
    }
    }
     
    return 0;
}

您对 comma operator 的使用存在问题,它让您相信该条件实际上是强制执行的。

此声明

i>=6,i<=n;

忽略来自i>=6的结果(false如果n==6),尽管评估它然后继续检查是否 i<=n 因为这就是 comma(,) 运算符在这种情况下的工作方式。因此,当 n<=6 时,您的循环仍会打印值。您要找的是

i>=6 && i<=n;

&&Logical AND 运算符,这意味着两个条件都必须为真才能使语句为真(并且显然不会丢弃左侧条件)。

至于为什么循环 运行s 7 次(如果 n 是 6,则比 n 多一次)那是因为你的循环本质上变成了:

for(i = 0; i <= 6; i++)

从0开始运行7次

你的第二段代码也发生了同样的事情,只是这次循环本质上是

for(i = 0; i<= n- 2;i++)

因此,对于 n 的值为 6,您将有 5 次迭代,这就是您 see,即 0 和 1

之后的 5 个项
This Program Gives You The List Of First 'n' Fibonacci Numbers:
Enter The Value Of 'n':
The First 6 Fibonacci Numbers Are:
0
1
1
2
3
5
8