當前位置:編程學習大全網 - 編程軟體 - python請用遞歸算法編程解決漢諾塔問題 在線等

python請用遞歸算法編程解決漢諾塔問題 在線等

這是Python3系統自帶的壹個例子,估計就是這個意思,本來他是6個盤子,按照妳要求改成4個了。遞歸算法沒問題,描述也非常詳細 ;)

#!/usr/bin/env?python3

from?turtle?import?*

class?Disc(Turtle):

def?__init__(self,?n):

Turtle.__init__(self,?shape="square",?visible=False)

self.pu()

self.shapesize(1.5,?n*1.5,?2)?#?square-->rectangle

self.fillcolor(n/6.,?0,?1-n/6.)

self.st()

class?Tower(list):

"Hanoi?tower,?a?subclass?of?built-in?type?list"

def?__init__(self,?x):

"create?an?empty?tower.?x?is?x-position?of?peg"

self.x?=?x

def?push(self,?d):

d.setx(self.x)

d.sety(-150+34*len(self))

self.append(d)

def?pop(self):

d?=?list.pop(self)

d.sety(150)

return?d

def?hanoi(n,?from_,?with_,?to_):

if?n?>?0:

hanoi(n-1,?from_,?to_,?with_)

to_.push(from_.pop())

hanoi(n-1,?with_,?from_,?to_)

def?play():

onkey(None,"space")

clear()

try:

hanoi(6,?t1,?t2,?t3)

write("press?STOP?button?to?exit",

align="center",?font=("Courier",?16,?"bold"))

except?Terminator:

pass?#?turtledemo?user?pressed?STOP

def?main():

global?t1,?t2,?t3

ht();?penup();?goto(0,?-225)#?writer?turtle

t1?=?Tower(-250)

t2?=?Tower(0)

t3?=?Tower(250)

#?make?tower?of?6?discs

for?i?in?range(4,0,-1):

t1.push(Disc(i))

#?prepare?spartanic?user?interface?;-)

write("press?spacebar?to?start?game",

align="center",?font=("Courier",?16,?"bold"))

onkey(play,?"space")

listen()

return?"EVENTLOOP"

if?__name__=="__main__":

msg?=?main()

print(msg)

mainloop()

  • 上一篇:雲南霓拓貿易有限公司怎麽樣?
  • 下一篇:自學python開發要多久
  • copyright 2024編程學習大全網