【数据结构与算法】六 █算法复杂度█ 二 时间复杂度 递归算法

【数据结构与算法】六 █算法复杂度█ 二 时间复杂度 递归算法

递归算法

以我们上一篇中介绍的兔子算法为例
C++

#include <iostream>

using namespace std; 

int  rabbit(int i){
    if(i<2){
        return 1 ;
    }else{
        return rabbit(i-1) + rabbit(i-2);
    }
}

int main(){
    cout << rabbit(12) << endl;
}




自然归纳法估算

对于递归算法的时间复杂度我们也用递归的时间复杂度来解释(ps:似乎提起来很绕),让我们来用公式来解释下.
T(n1)+T(n2)+O(1)
ps: O(1)为T(n-1) + T(n-2)相加的复杂度
下面我们用自然归纳法来表示
当n=0 , 1 时间复杂度为 O(1)O(2n)
T(n1)O(2n)
T(n)O(2n1)+O(2n2)+O(1)
O(2n1)O(2n2)1.618
T(n)2O(2n1)+O(1)
T(n)O(2n)





最后

通过上面一些简单的讲解,
相信朋友们已经知道其原理及特性了。
本人能力有限,
如发现错误或不合理欢迎指正…





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值