由 r0
=α;r
n=rn
−1+β
+γn,
n>
0.(2.7)
及 rn
=a(n
)α+b
(n)β
+c(n
)γ,(2.8)
求出 a(
n)b(
n)c(
n)=1
,=n,
=(n2
+n)/
2,即 rn
=α+n
β+12
(n2+
n)γ.
首先我們來考察
(2.7
) 式。
(2.7
) 式是一類遞迴式的通用形式,在此式中,
α 、
β 和
γ 可以取任意值,但是要注意,它們是常數。也就是說,對於乙個具體的遞迴式而言,它的值是確定的。 對於(
2.7)
式所示的一類遞迴式,我們希望能求出乙個通用的解。於是我們先對
n 較小時的情況進行計算觀察: r0
r1r2
r3..
.=α,
=α+β
+γ,=
α+2β
+3γ,
=α+3
β+6γ
,可以看出,
α 、
β 和
γ 的係數是
n 的函式,於是可以將
(2.7
)式的解表述成
(2.8
) 式的形式。
現在我們考察
(2.8
) 式。在
(2.8
) 式中,a(
n)、b(n
) 和c(
n)都是
n 的函式,α、
β 和
γ 是常數。而我們的目的是求出a(
n)、b(n
) 和c(
n),則a(
n)、b(n
) 和c(
n)相當於未知數。可以模擬於下式: αx
+βy+
γz=a
. 於是為了求出a(
n)、b(n
) 和c(
n),我們需要列出三個等式,模擬於下式: ⎧⎩
⎨α1x
+β1y
+γ1z
=a1,
α2x+
β2y+
γ2z=
a2,α
3x+β
3y+γ
3z=a
3.所以我們需要找到三對
以組成方程組。
我們最直接的想法就是,隨意選取三組
,然後求出r(
n),以此湊出三對
。但是我們現在要解決的問題就是由
求出r(
n),所以此法不行。不如,我們反其道而行之,先隨意選取乙個r(
n),然後求出對應的
。r(n
) 的選取是任意的,只要能由其確定
。於是我們首先選取最簡單的 rn
=1.⇒α
=1,β
=0,γ
=0.再次我們選取 rn
=n.⇒
α=0,
β=1,
γ=0.
最後,我們選取 rn
=n2.
⇒α=0
,β=−
1,γ=
2.
於是我們可以得到方程組: ⎧⎩
⎨⎪⎪1
nn2=
a(n)
,=b(
n),=
−b(n
)+2c
(n).
解之得 ⎧⎩
⎨⎪⎪a
(n)=
1,b(
n)=n
,c(n
)=12
(n2+
n).
從而我們得出 rn
=α+n
β+12
(n2+
n)γ.
要理解這種解遞迴式的成套方法,主要要抓住兩點:
1) a(n
) 、b(
n)和c(n
) 相當於未知數,而r(
n)和α
、β、γ
在具體的遞迴例項中,都相當於已知數。
2) 要得到三對
,要反其道而行之,先確定r(
n),然後由此求出
α 、
β 和
γ .
傻瓜式理解遞迴之php遞迴
寫程式這麼久了,有時候別人會問道一些演算法比如排序啊,遞迴啊,總是不知道該怎麼去說,今天就來整理一下,讓更多的人去傻瓜式的理解遞迴。遞迴在網路上有很多定義,但有這麼一句話聽的最多 遞迴就是自己呼叫自己!引用百科的乙個故事去理解 從前有座山,山里有座廟,廟裡有個老和尚,正在給小和尚講故事呢!故事是什麼...
2 2 CyclicBarrier的理解和使用
快速理解 給所有執行緒加上了乙個屏障,只有所有的執行緒都到達屏障之後 即cyclicbarrier初始值count 0 所有執行緒才會繼續執行 cyclicbarrier的簡單使用 初始cyclicbarrier是3,當三個執行緒都到達 屏障 即執行await 之後,三個執行緒才能夠自動執行 常用方...
遞迴的原理和分析
遞迴作為一種程式設計中使用頻繁的思想和方法,熟話說就是自己呼叫自己,不僅方便靈活,而且可以簡化 遞迴的實現在很大程度上歸功於棧的機制,因為函式在每次執行時都從棧上獲得了它的形參的私有副本和區域性變數,這些變數位於棧的不同位置,在函式執行過程中,函式原來的形參和變數不會受到干擾,所以遞迴能夠正確的執行...