算法基础二 递推法

/*递推法*/
/*斐波那契数列 1 1 2 3 5 8 13..... f(n)?*/
/*递推法的特点是由前向后推算,因此注意起始条件,并在推算过程中保存结果供下一步推算使用~*/
#include<iostream>
using namespace std;
int f1(int n)
{
    if (n < 3)return 1;
    else
    {
        int t1 = 1; int t2 = 1;
        for (int i = 2; i < n; i++)
        {
            int temp = t1 + t2;
            t2 = t1;
            t1 = temp;
        }
        return t1;
    }
}

//提供递归算法对比,相较而言递归法更简单,我们下次详细讨论~
int febonacci(int n)
{
    if (n < 3)return 1;
    else return febonacci(n - 2) + febonacci(n - 1);
}
int main()
{
    int n;
    cout << "请输入f(n)序列n" << endl;
    cin >> n;
    cout << "递推法:f(" << n << ")=" << f1(n)<<endl;
    cout << "递归法:f(" << n << ")=" << febonacci(n) << endl;
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。