递归式的运行时间

本文介绍了如何分析包含递归的程序运行时间,重点讨论了《算法导论》中提到的三种方法:代换法、递归树和主方法。通过对递归式T(n)=aT(n)+f(n)的探讨,展示了每种方法的核心思想和适用情况。尽管主方法存在局限性,但在大多数实例中,它是最便捷的解决方案。
摘要由CSDN通过智能技术生成

对于一些包含递归的程序要一眼看出他的运行时间O并不是很容易的事,不过好在这也并不是一件很难的的事,至少《算法导论》中对递归式的时间求解就列举了三种方法:1.代换法,2.递归树,3.主方法。

在本文中将用到的递归式表示为T(n)=aT(n\b)+f(n),a>0,b>1;

1.代换法

         代换法的核心在于猜,首先需要我们猜一个合适的运行时间(比如n,n^2等),假设我们现在对于某一个递归式的猜测为c(n^x),此时我们有T(n)的运行时间为c(n^x),我们在讲c(n^x)代入到递归式中,能够得到递归式的运行时间为m(m或为多项式),看最后的结果能不能满足当c取某一常数的时候有c(n^x)>=m,如果有,则说明我们的猜测至少不是错误的,但还是有可能我们猜测的运行时间远远大于实际的运行时间,此时c(n^x)>=m也成立,然后我们需要逐步减少猜测的运行时间,逐步进行确定,最后的到一个较为准确的时间。如果不满足c(n^2)>=m,则说明我们的猜测过于小,这时就需要增大猜测的运行时间,然后进行验证。

        代换法并不是一个很好的求解递归式时间的方法,但这却是一个锻炼自己对递归式时间判断的好方法。当对各种各样的递归式了解的足够多的时候,可以

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值