递归解决汉诺塔问题
我知道汉诺塔的基本概念,也了解它的算法,但在实现的时候遇到了一些困难。
class Hanoi:
def __init__(self, n):
== code==
def move(self, src, dst):
=code for moving the disk from source to destination==
def spare(self, src, dst):
==Returns the peg which is not src and dst==
def print_pegs(self):
h = Hanoi(4)
def hanoi(n, src, dst):
if n==1:
h.move(src,dst)
else:
spare=h.spare(src,dst)
hanoi(n-1,src,spare)
hanoi(1,src,dst)
hanoi(n-1,spare,dst)
hanoi(4, 0, 2)
我遇到的问题是,我不知道怎么把递归的定义和类的函数结合起来,以便移动盘子。
1 个回答
1
你需要把递归调用放在 move()
和 spare()
这两个函数的内部,并把你的 hanoi()
函数的逻辑移到相应的方法里。
所以
class Hanoi(object):
# snip
def move(self, src, dst):
# your logic goes here
# example of a recursive call
self.move(foo, bar)