遞迴之 漢諾塔

2021-07-09 04:34:09 字數 694 閱讀 1129

遞迴思想的概念:即將乙個複雜問題分解成一系列小的問題,並且這些小問題都具有相同的情形。

此時可運用遞迴的思想來解決更易於理解(但並不一定是效率最高的哦);

遞迴演算法有三個關鍵點:

(1)了解題意是否適用遞迴來解決;

(2) 有明確的終止條件(通常是分解出來的一系列小問題裡最簡單的那種情況);

(3) 隨著遞迴演算法的演進,資料規模在遞減,決定遞迴執行部分;

設計思路:

我們可以定義出圓盤原先所在樁為「**樁」(from),鐵盤預以往"目的樁(to)",而另乙個樁為「輔助樁(auxiliary)」當圓盤為三個時,

需把圓盤一移往目的樁,再把圓盤二移往輔助樁,把圓盤一移到輔助樁圓盤二上,然後把圓盤三移到目的樁。。。。。。.

以此類推,可知當未移往目的樁的圓盤數為1時,則將最後所剩的鐵盤移至目的樁,即完成工作。

否則,(1)將前n-1個圓盤從源樁移往輔助樁;

(2)將編號為n的鐵盤從源樁移往目的樁;

(3)將前n-1個圓盤從輔助樁移往目的樁。

int step_number;

void move(char x,char y,int number)

void hanoi(int n,char from,char auxiliary,char to)

}void main()

遞迴之漢諾塔

漢諾塔 time limit 1000 ms memory limit 65536 kib submit statistic problem description 漢諾塔 又稱河內塔 問題是印度的乙個古老的傳說。開天闢地的神勃拉瑪在乙個廟裡留下了三根金剛石的棒a b和c,a上面套著n個圓的金片,最...

遞迴之漢諾塔

問 如何移?最少要移動多少次?解法的基本思想是遞迴。假設有a b c三個塔,a塔有n塊盤,目標是把這些盤全部移到c塔。那麼首先將c塔作為中介,把a塔頂部的n 1塊盤移動到b塔,再把a塔剩下的n移到c,最後將a塔作為中介,把b塔的n 1塊盤移到c。每次移動多於一塊盤時,則再次使用上述演算法來移動。第一...

漢諾塔 遞迴

個人理解遞迴函式的基本要求就是,函式中呼叫函式本身,滿足特定的條件後返回。include include include include include include include include include include include include include 標頭檔案引用的較多...