本文目錄一覽:
python語言漢諾塔(hanoi)問題
move(n, A, B) 就表示把第n個餅從A柱移到B柱, 其中step是個全局變量,用來記錄移動的次數。
hanoi(n, A, B, C) 就是你所問的實現遞歸的函數, 表示把n個餅從A柱通過B柱移到C柱。
其中 n==1 是遞歸的最基本的情況, 如果只有一個餅就直接移到目標柱子即可。
不然呢我們就先把最上面n-1個餅從A通過C移到B,注意這裡移到的是B柱哦~, 然後把第n塊餅移到C柱,再重新把之前移到B柱上的n-1個餅通過A移動到C。
整個過程挺直白的,想通了就明白了
python利用遞歸解決漢諾塔問題,求大神解釋一下代碼
這是一個典型的遞歸程序
當只有一層的時候,直接把x放到z上結束
當大於1層的時候,先把x和z放到y上,然後繼續遞歸
把y放到x上,然後放到z上,結束處理
python解決漢諾塔問題?
解漢諾塔最簡單的做法就是遞歸:
類似如何將大象裝進冰箱:1)將冰箱門打開;2)把大大象放進去;3)把冰箱門關上……
我們將所有的盤都在同一個桿上從大到小排列視為【完美狀態】,那麼,目標就是將最大盤片為n的完美狀態從a桿移到b桿,套用裝大象的思路,這個問題同樣是三步:
1)把n-1的完美狀態移到另一個桿上;
2)把n移到目標杆上;
3)把n-1的完美狀態移到目標杆上。
如下:
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/195835.html