首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用代换法求解递归

用代换法求解递归
EN

Stack Overflow用户
提问于 2016-02-16 17:36:53
回答 1查看 1.3K关注 0票数 2

因此,我目前正在选修算法课程,我有一个问题,解决了递归,并获得了运行时间。我想知道是否有人能用外行的术语向我解释如何用替代方法来解决这个问题。

书中的问题:算法B通过递归地解决大小n,−1的两个子问题,然后在恒定时间内组合这些解来解决n个大小的问题。

这导致我想出了以下的重复:T(n)=2T(n-1)+O(1)。然后我想出了O(1)=1。它给了我以下信息:T(n)=2T(n-1)+1

下面是我解决这个问题的尝试

代码语言:javascript
复制
T(n)=2T(n-1)+1
=2(2T(n-2)+1)+1=4T(n-2)+3
=4(2T(n-3)+1)+3=8T(n-3)+7
=8(2T(n-4)+1)+7=16T(n-4)+15
=16(2T(n-5)+1)+15=32T(n-5)+31
=32T(2T(n-6)+1)+31=64T(n-6)+63

如果我做的对,我如何继续获得运行时间?有人能用外行人的术语来解释如何使用替代方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-16 17:52:53

您已经接近了,但是您可以设置回替换格式,这样就更有意义了:

代码语言:javascript
复制
T(n)
=2^1T(n-1)+(2^1-1)
=2^2T(n-2)+(2^2-1)
=2^3T(n-3)+(2^3-1)
=2^4T(n-4)+(2^4-1)
=2^5T(n-5)+(2^5-1)
=2^6T(n-6)+(2^6-1)
...

n接近0时,您可以在这里看到一个模式。它变成了类似于2^n + 2^n - 1的东西,在大O表示法中变成了O(2^n)

我的一些洞察力可能会帮助您处理其他的递归关系:重复发生n次数,每次迭代乘以2。听起来有点像2^n

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35439341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档