数据结构:递归算法时间复杂度与空间复杂度计算方法


Ⅰ.递归算法求时间复杂度步骤


1.步骤

①先将这个递归算法分成两类,一类是满足递归条件时,一类为递归停止条件时

②然后分别算出这两类的执行次数。注意!如果在满足递归条件这一类中,计算执行次数的时候,发现要调用递归函数的话,就直接用函数记这一次的执行次数如3+T(n+1)

③根据题意,将变量从0开始的时候执行,一直执行到n,然后计算其执行次数

2.例题

计算下列递归算法的时间复杂度

在这里插入图片描述
分析:
①写出每一个分支语句所需要执行的次数
②将此递归算法分成两类,分别算执行次数。当为递归停止的条件时,即k=n-1,这一类的时间复杂度为n;当满足递归条件时,执行次数为(n-k)+T(n,k+1)
③计算当从n=0开始时,执行次数的变化。

解答:
第一步:
在这里插入图片描述
第二步:
在这里插入图片描述注意:一开始进入函数时k=0,所以第一次调用为T(n,0),然后k一直加,最后会达到k=n-1,所以最后时间的复杂度就为n的平方

易错点:
分支语句的话,算执行次数每次只能算其中一个语句的执行次数,不可以同时算两个分支语句


Ⅱ.递归算法求空间复杂度步骤


1.步骤

①先将这个递归算法分成两类,一类是满足递归条件时,一类为递归停止条件时

②然后分别算出这两类的空间占用度。注意:a.如果在满足递归条件这一类中,计算执行次数的时候,发现要调用递归函数的话,就直接用函数记这一次的执行次数如3+S(n+1) b.空间复杂度,只要你在函数体内定义了一个变量,那么就会占用一个空间

③根据题意,将变量从0开始的时候执行,一直执行到n,然后计算其执行次数

2.例题
计算下列递归算法的空间复杂度
在这里插入图片描述

分析:
①将此递归算法分成两类,分别算空间。当为递归停止的条件时,即k=n-1,这一类的空间复杂度为1,因为此时一共只调用了一次函数fun(),而一个fun()里面有一个空间;当满足递归条件时,执行次数为1+S(n,k+1)
②计算当从n=0开始时,空间复杂度的变化

解题:
第一步
在这里插入图片描述

第二步

在这里插入图片描述


另外


如果是非递归算法的空间与时间复杂度的计算,则不需要这么复杂,直接按照之前做的笔记的方法即可,笔记即在了纸质笔记本上

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值