C语言经典算法(八)——递归实现斐波那契数列的两种方法

后继续整理算法并写出自己的理解和备注。 C++实现的:递归实现斐波那契数列

1、 递归实现斐波那契数列Fib(n)
<1> 题目描述:输入n值,求解第n项的斐波那契数列值
<2> 方法一:概念法
<3> 方法二:递归法
斐波那契数列值是值1 1 2 3 5 8 13前两项之和为下一项

源码:
一、 递归实现斐波那契数列Fib(n)
1、 概念法

#include<iostream>
#include<assert.h>
using namespace std;
unsigned int Fib(unsigned int n)
{
    unsigned int fib1 = 1;
    unsigned int fib2 = 1;
    unsigned int fib;
    for(int i=3; i<=n; ++i)//原理直接法
    {
        fib = fib1 + fib2;
        fib1 = fib2;
        fib2 = fib;
    }
    return fib;
}
void main()
{
    unsigned int n;
    cout<<"请输入n:";
    cin>>n;
    cout<<"第"<<n<<"项的斐波那契值为:>"<<Fib(n)<<endl;
}

2、 递归法

#include<iostream>
#include<assert.h>
using namespace std;
unsigned int Fib(unsigned int n)
{
    if(n==1 || n==2)
        return 1;
    else
        return Fib(n-1)+Fib(n-2);
}
void main()
{
    unsigned int n;
    cout<<"请输入n:";
    cin>>n;
    cout<<"第"<<n<<"项的斐波那契值为:>"<<Fib(n)<<endl;
}

猜你喜欢

转载自blog.csdn.net/zxh1592000/article/details/78984788
今日推荐