c++输入一个正整数n,求第n个斐波那契数

2025-03-04 22:00:49
推荐回答(3个)
回答1:

【解题思路】
斐波那契数,简单的讲就是除了第1项和第2项是1以外,其它的每一项都等于前两项的和。比如:1,1,2,3,5,8,13……,所以要求出第n项的值,需要从第3项开始,用循环逐项往后求,每次保存前两项,一直求到循环变量等于n为止。具体代码如下:
【程序代码】
int Fibonacci(int n)           //求斐波那契数第n项的值
{int a,b,s,i;                  //a,b为前2项,s为第n项,i是循环变量
 a=b=1;s=1;                    //初始化前2项和第n项的值
 for(i=3;i<=n;i++)             //从第3项开始逐项求值
    {s=a+b;                    //求出第i项的值
     a=b;b=s;}                 //重置a和b的值,为求正一项作准备
return s;}
【程序示例】
#include                     //控制台操作头文件

int main()                             //主函数
{int n,s,i;                            //第n项值为s,i是循环变量
 do{printf("请输入一个正整数(0退出):");//输入提示
    scanf("%d",&n);                    //输入第n项
    if(n==0) break;                    //输入0退出循环结束函数
    if(n<0) {printf("\n");continue;}   //如果输入负数重新输入
    printf("%d项的斐波那契数是:",n);   //显示提示
    for(i=1;i<=n;i++)                  //用一个循环输入每一项
       {s=Fibonacci(i);                //求出第i项的值
        printf("%d ",s);}              //示示第i项的值
    printf("\n\n");}while(1);          //设置一个无穷循环
 printf("\n");                         //换行
 system("PAUSE");                      //暂停屏幕查看结果
 return 0;}                            //结束程序
【运行结果】
以上程序在DEV C++运行通过,截图如下:


回答2:

#include
#include
using namespace std;
int fibonaci(int n) {
if (n <= 0) {
return -1;
}
if (n == 1 || n == 2) {
return 1;
}
else {
return fibonaci(n - 2) + fibonaci(n - 1);
}
}
int main()
{
for (int i = 1; i <= 30; i++) {
cout << fibonaci(i) << endl;
}

    return 0;
}

回答3:

如图