直接上圖開幹: 1個盤子直接從a放到c(遞迴出口),大於1個不管你有多少盤子,我始終把你當成兩個盤子,即第n個和第(n-1)個,那就是把(n-1)放到b,把n放到c,再把(n-1)放到c,遞迴思想大功告成;
直接上**:
void
prinmove
(int num,
char a,
char b)
void
move
(int num,
char a,
char b,
char c)
//三根柱子 a,b,c
else
move
(num -
1, a,c,b)
;//將(n-1)放在b柱子上
prinmove
(num,a, c)
;//將第n個放在c上
move
(num -
1, b, a, c)
;//再將(n-1)個從b放到c
}int
main()
遞迴不要太糾結每乙個函式執行的過程,太複雜容易亂,要從遞迴本質出發,將其分解成與原問題相似的小問題來解決,比如漢諾塔,始終是n和(n-1)的事兒,將出口找好,整體分解一次,依次遞迴; 漢諾塔問題python詳解 《簡單分析》漢諾塔問題
漢諾塔是乙個非常著名的遊戲,遊戲中將會有三根棍子,第一根棍子上有n個從大到小疊起來的盤子,遊戲的目標是將這n個從大到小疊起來的盤子放到第三根棍子上。每一次只允許移動乙個,而且大的盤子永遠在小的盤子的下面。這也是非常著名的遞迴入門題。我們將通過呼叫三次遞迴函式來解決這個問題。暫時不考慮 只考慮解題。先...
經典漢諾塔問題分析
漢諾塔 於印度傳說的乙個故事,上帝創造世界時作了三根金剛石柱子,在一根柱子上從上往下從小到大順序摞著64片 圓盤。上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一回只能移動乙個圓盤,只能移動在最頂端的圓盤。有預言說,這件事完成時宇宙會...
漢諾塔問題遞迴演算法分析
乙個廟裡有三個柱子,第乙個有64個盤子,從上往下盤子越來越大。要求廟裡的老和尚把這64個盤子全部移動到第三個柱子上。移動的時候始終只能小盤子壓著 子。而且每次只能移動乙個。1 此時老和尚 後面我們叫他第乙個和尚 覺得很難,所以他想 要是有乙個人能把前63個盤子先移動到第二個柱子上,我再把最後乙個盤子...