演算法筆記 遞迴 漢諾塔問題

2021-07-09 11:29:24 字數 445 閱讀 9075

演算法:

當只有乙個盤子的時候,只需要從將a塔上的乙個盤子移到c塔上。

當a塔上有兩個盤子是,先將a塔上的1號盤子(編號從上到下)移動到b塔上,再將a塔上的2號盤子移動的c塔上,最後將b塔上的小盤子移動到c塔上。

當a塔上有3個盤子時,先將a塔上編號1至2的盤子(共2個)移動到b塔上(需借助c塔),然後將a塔上的3號最大的盤子移動到c塔,最後將b塔上的兩個盤子借助a塔移動到c塔上。

當a塔上有n個盤子是,先將a塔上編號1至n-1的盤子(共n-1個)移動到b塔上(借助c塔),然後將a塔上最大的n號盤子移動到c塔上,最後將b塔上的n-1個盤子借助a塔移動到c塔上。

綜上所述,除了只有乙個盤子時不需要借助其他塔外,其餘情況均一樣(只是事件的複雜程度不一樣)。

遞迴演算法 漢諾塔問題

圖1 漢諾塔分析 三個過程 漢諾塔問題,經典遞迴問題 遞迴問題的關鍵 1.如何縮小問題的規模 2.如何解決最簡單問題 即 1找出遞迴體,2找出遞迴出口 試圖追蹤程式執行過程,都是徒勞的 2018年4月10日10 49 46 by 楷諧之力 includevoid move char frm,char...

漢諾塔問題遞迴演算法

1.題目 漢諾塔 hanoi tower 又稱河內塔,源於印度乙個古老傳說。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,任何時候,在小圓盤上都不能放大圓盤,且在三根柱子之間一次只...

遞迴演算法 漢諾塔問題

程式呼叫自身的程式設計技巧稱為遞迴。乙個過程或函式在其定義或說明中又直接或間接地呼叫自身的一種方法,通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解。遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的 量。遞迴的能力在於用有限的語句來定義物件的無...