1. 程式人生 > 其它 >(具體數學第2版)遞迴-Hanoi問題

(具體數學第2版)遞迴-Hanoi問題

小碎語

Hanoi是遞迴的基礎,從基礎開始,學好遞迴!

Hanoi的遊戲規則

一共有三根杆,開始盤子全在一根杆上,每次只能移動一個盤子,並且在移動過程中三根杆上都始終保持大盤在下,
小盤在上,當全部盤子轉移到另一根杆上即成功。

書上的推導


這張圖主要觀點就是T0 = 0,n = 0;Tn = 2Tn-1+1,n > 0.(T表示n個圓盤時需要的最少運算元需要多少步)

上面推出了遞迴式,但是和斐波拉契數列一樣,當n足夠大時,Tn的值就需要很久才能求出來,那如何O(1)的時間內
求出Tn呢,那就是圖2所證明的,主要運用了數學歸納法(能與遞迴式完美地結合)。
那麼能在O(1)的時間內求出Tn的值的公式就是Tn

= 2n-1。

總結

遞迴的公式推法重要的兩點:一是從容易的狀態考慮(這和dp很像),二是引入適當的記號:命名並求解。就如圖1,
命名Tn是根據hanoi的規則將n個圖盤從一根樁柱移動到另一根樁柱所需要的最小步數。從而顯然:T1=1,T2=3.