斐波那契数列求第N项的算法时间复杂度

本文探讨了斐波那契数列的暴力递归解法,通过分析其时间复杂度,指出在计算较大项时效率低下。文章可能涉及如何利用动态规划或矩阵快速幂等优化策略提高算法效率。
摘要由CSDN通过智能技术生成
  1. 暴力通项递归
    斐波那契数列a1=1;a2=1;a3=a1+a2;......an=an-1+an-2;使用暴力解法的思路如下:

    #include<iostream>
    #include<vector>
    using namespace std;
    static int count=0;
    /*暴力递归求解斐波那契数列*/
    /*时间复杂度是O(2^n)*/
    int forceFib(int i){
        if(1==i||2==i)return 1;
        count++;
        return forceFib(i-1)+forceFib(i-2);
    }
    
    /*使用带备忘录的递归求解*/
    /*时间复杂度是O(n)*/
    /*1,主调函数中创建并初始化记事本
        2,递归函数接收记事本引用和查询序号
        3,递归结束条件
        4,查询记事本,若查到直接返回
        5,查询不到,进行递归,并将计算结果存到记事本
        6,返回记事本中结果。
    */
    int recursion(int i, vector<int>&checkVec);//函数声明
    
    int backupFib(int i){
        vector<int>backupVec(i+1,0);/*创建记事本并全部初始化为0*/
        return recursion(i,backupVec);/*记事本和查询序号传给递归函数*/
    }
    
    int recursion(int i, vector<int>&check
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值