python程式設計練習 漢諾塔的實現

2022-07-07 19:06:16 字數 697 閱讀 1007

漢諾塔遊戲

由中間作為中轉,將左側圓盤全部移動到右側,並且保留從上到下為從小到大的排列順序

解題思路:

對於乙個n層的漢諾塔,如果完成轉移工作,首先需要將前n-1層移動到中間位置,再將最底層移動到右側,之後將中間n-1層移動到右側,完成全部的移動

整個步驟:

左側n-1層---》中間,右側中轉

左側第n層---》右側

中間n-1層---》右側,左側中轉

那對於n-1的移動,需要借助遞迴來完成,整個執行過程如下:

# -*- coding: utf-8 -*-

__author__ = 'felix'

def move(n, a='左側', b='中間', c='右側'):

if n == 1: #僅有一層

print(a, "-->", c) #a直接移動到c

return

else:

move(n-1, a, c, b) #n-1,c為中轉,a---b

move(1, a, b, c) #第n,b為中轉,a---c

move(n-1, b, a, c) #n-1,a為中轉,b---c

python 漢諾塔 Python漢諾塔

import turtle class stack def init self self.items def isempty self return len self.items 0 def push self,item def pop self return self.items.pop def ...

python漢諾塔程式設計 python實現漢諾塔演算法

題目 漢諾塔給出最優解,如果對漢諾塔的定義有不了解,請翻看資料結構教材。除了最基本的之外,還有一題,給定乙個陣列,arr 2,3,1,2,3 其含義是這是乙個有5個圓盤的漢諾塔,每乙個數字代表這個圓盤所在的位置,1代表左邊的柱子,2代表中間,3代表右邊。給出這個序列代表了漢諾塔移動的第幾步,如果該步...

漢諾塔問題python詳解 《簡單分析》漢諾塔問題

漢諾塔是乙個非常著名的遊戲,遊戲中將會有三根棍子,第一根棍子上有n個從大到小疊起來的盤子,遊戲的目標是將這n個從大到小疊起來的盤子放到第三根棍子上。每一次只允許移動乙個,而且大的盤子永遠在小的盤子的下面。這也是非常著名的遞迴入門題。我們將通過呼叫三次遞迴函式來解決這個問題。暫時不考慮 只考慮解題。先...