Recursion 多步递推求解递推方程
我正在研究一些算法,我试图确定在形成方程时如何处理多个递归步骤 因此,附件A: 对我来说很明显,这里的递推方程是:T(n)=c+2T(n/2),它在大O表示法中简化为O(n) 然而在这里,我们也有类似的情况,我得到了递归方程T(n)=n+2T(n/2),因为我们有两个递归调用,与第一个不同,在大O表示法中,它简化为O(n),但这里不是这样。关于如何在第二个方程中得到正确的递推方程,有什么意见吗Recursion 多步递推求解递推方程,recursion,big-o,time-complexity,recurrence,Recursion,Big O,Time Complexity,Recurrence,我正在研究一些算法,我试图确定在形成方程时如何处理多个递归步骤 因此,附件A: 对我来说很明显,这里的递推方程是:T(n)=c+2T(n/2),它在大O表示法中简化为O(n) 然而在这里,我们也有类似的情况,我得到了递归方程T(n)=n+2T(n/2),因为我们有两个递归调用,与第一个不同,在大O表示法中,它简化为O(n),但这里不是这样。关于如何在第二个方程中得到正确的递推方程,有什么意见吗 关于如何着手解决这一问题的任何意见都将是明智的 您可能对主定理感兴趣: 递推方程T(n)=n+2T
关于如何着手解决这一问题的任何意见都将是明智的 您可能对主定理感兴趣: 递推方程
T(n)=n+2T(n/2)
为Theta(n logn)
,可使用该定理导出。要手动执行此操作,还可以假设n=2^k
,然后执行以下操作:
T(n) = 2T(n/2) + n
= 2(2T(n/4) + n/2) + n
= (2^2)T(n/(2^2)) + 2n
= (2^2)(2T(n/(2^3)) + n/(2^2)) + 2n
= (2^3)T(n/(2^3)) + 3n
= ...
= (2^k)T(n/(2^k)) + kn
= nT(1) + n log2 n
= Theta(n log n)
很晚了,我可能看错了,但是你不小心发布了两次相同的代码片段吗?你发布的两个函数都是相同的,这是你的意图吗?不,但你们是对的!很抱歉,我刚刚修好了。我自己没注意到。斯图尔特,你介意再看一次这个问题吗?我用固定图像链接更新了它