遞迴之漢諾塔

2022-09-09 18:18:19 字數 503 閱讀 3330

問:如何移?最少要移動多少次?

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

第一層遞迴(n - 1,  a, c, b)將c當作乙個過度盤,a的n - 1個移動到b

然後將a上的n移到c

第二層遞迴(n - 1, b, a, c)將a當作乙個過度盤,b的n - 1個移動到c

**實現

#include using

namespace

std;

void recu(int n, char a, char b, charc)}

intmain()

遞迴之 漢諾塔

遞迴思想的概念 即將乙個複雜問題分解成一系列小的問題,並且這些小問題都具有相同的情形。此時可運用遞迴的思想來解決更易於理解 但並不一定是效率最高的哦 遞迴演算法有三個關鍵點 1 了解題意是否適用遞迴來解決 2 有明確的終止條件 通常是分解出來的一系列小問題裡最簡單的那種情況 3 隨著遞迴演算法的演進...

遞迴之漢諾塔

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

漢諾塔 遞迴

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