解决递归式的repertoire method

解决递归式是一个头疼的问题,即使是只求出在大O范围下的封闭解,
需要运用master定理,递归树等等,有时仍然无法解决。
在这里提出的方法并不是在大O意义下的,只是一个大家都很常用的求解递归式的方法。
例如求解递归式

f(1)f(2n)f(2n+1)=α=2f(n)+β   ,n1=2f(n)+γ   ,n1

很容易可以假设出
f(n)=A(n)α+B(n)β+C(n)γ

其中 A(n),B(n),C(n) 是只於 n 有关的函数。
我们可以随意假设出f(n)来求取 A(n),B(n),C(n)
首先假设 f(n)=n ,那么 α=1,β=0,γ=1
得到
A(n)+C(n)=n(1)

然后给 f(n) 一个常函数,例如 f(n)=1 ,
那么 α=1,β=1,γ=1
得到
A(n)B(n)C(n)=1(2)

还需要一个式子才能解出三个函数。
这时无论令 f(n) 为什么都不好做了。
那么我们可以观察原式。
发现如果令 f(n)=A(n) ,那么原式会变为
A(1)A(2n)A(2n+1)=1=2A(n)   ,n1=2A(n)   ,n1

可以直接使用归纳法解得 A(n)
A(n)=2m,n=2m+l(0l<2m)(3)

联立 (1)(2)(3) 式即可解得
A(n)B(n)C(n)=2m=2m1l=l

即可解得 f(n)
这种方法的思想就是待定系数法。
有时还需要敏锐的观察力和灵感。

注:我在一本书上发现了和上式形式相近的一类递归式通用的神奇解法,我会在仔细研究后发上来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值