C++程序 求解斐波那契数列

C++程序 求解斐波那契数列

斐波那契数列是指每个数都是前两个数的和,即0,1,1,2,3,5,8,13,21,34,\cdots

C++中,我们可以通过递归和循环两种方法实现斐波那契数列的求解。

递归实现

递归实现的代码较为简单,使用函数自身调用即可求解。

#include<iostream>
using namespace std;

int fib(int n)
{
    if(n==0) return 0;
    else if(n==1) return 1;
    else return (fib(n-1)+fib(n-2));
}

int main()
{
    int n;
    cout<<"请输入要求解的斐波那契数列的项数:";
    cin>>n;
    cout<<"斐波那契数列的前"<<n<<"项为:\n";
    for(int i=0;i<n;i++)
    {
        cout<<fib(i)<<" ";
    }
    return 0;
}

输出结果如下:

请输入要求解的斐波那契数列的项数:10
斐波那契数列的前10项为:
0 1 1 2 3 5 8 13 21 34

但是递归实现的效率一般较低,因为每次调用函数时都要重新压栈和出栈,所以当n较大时,程序的效率会降低。

循环实现

循环实现的思路是用两个变量来存储之前的两个数,然后不断更新这两个变量的值,直到求解出所需项数的斐波那契数列。

#include<iostream>
using namespace std;

int main()
{
    int n;
    cout<<"请输入要求解的斐波那契数列的项数:";
    cin>>n;
    cout<<"斐波那契数列的前"<<n<<"项为:\n";
    int fib1=0,fib2=1;//初始值
    cout<<fib1<<" "<<fib2<<" ";
    for(int i=2;i<n;i++)
    {
        int fib=fib1+fib2;
        cout<<fib<<" ";
        fib1=fib2;
        fib2=fib;
    }
    return 0;
}

输出结果如下:

请输入要求解的斐波那契数列的项数:10
斐波那契数列的前10项为:
0 1 1 2 3 5 8 13 21 34

可以看出,循环实现的效率要高于递归实现,因此在实际应用中,我们一般采用循环实现。

结论

通过以上两种方法,我们可以方便地求出所需项数的斐波那契数列。如果我们要在实际应用中实现高效的求解,建议使用循环实现。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例