解決遞迴式的repertoire method

2021-07-24 18:23:32 字數 1319 閱讀 6654

解決遞迴式是乙個頭疼的問題,即使是只求出在大o範圍下的封閉解,

需要運用master定理,遞迴樹等等,有時仍然無法解決。

在這裡提出的方法並不是在大o意義下的,只是乙個大家都很常用的求解遞迴式的方法。

例如求解遞迴式 f(

1)f(

2n)f

(2n+

1)=α

=2f(

n)+β

,n≥1

=2f(

n)+γ

,n≥1

很容易可以假設出 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),n

≥1=2

a(n)

,n≥1

可以直接使用歸納法解得a(

n) a

(n)=

2m,其

中n=2

m+l(

0≤l<2m

)(3)

聯立(1

)(2)

(3) 式即可解得 a(

n)b(

n)c(

n)=2

m=2m

−1−l

=l即可解得f(

n)這種方法的思想就是待定係數法。

有時還需要敏銳的觀察力和靈感。

注:我在一本書上發現了和上式形式相近的一類遞迴式通用的神奇解法,我會在仔細研究後發上來。

遞迴式與遞迴

如果你想迅速複習演算法來應付考試或者是面試的話,請看本人的其他部落格。遞迴,儘管簡單,卻並不是良藥。況且,在很多大公司看來,遞迴是一種非常麻煩並且耗時耗力的演算法。誠然,從簡單的計算角度來說,遞迴就是這樣的。但是,如果你換乙個角度來看看計算機的世界,遞迴卻是不能被忽略的。如果你是乙個有著人類智慧型的...

遞迴 氣泡排序的遞迴式寫法

第一次氣泡排序如上圖 比較順序是 01 12 23 34 第二次是 01 12 23 第三次是 01 12 第四次 01 經過這些有限次的比較以後 使得陣列元素有序。遞迴的寫法和思路也是基本相同 先上非遞迴的 基礎氣泡排序 排完序是遞減的有序序列 n是元素個數 for int i 1 i那氣泡排序就...

遞迴式求解

1 t n 不是單調函式,e.g.t n sinx 2 f n 不是多項式函式 e.g.t n t n 2 2n 3 b不能表示為乙個常量 e.g.t n 2t n 1 t n t n 2 1 2 n2 n 解 此時 a 1,b 2,f n 1 2 n2 n 故 nlogba n0 1f n nlo...