使用递归实现汉诺塔
class UnitTest:
def __init__(self):
self.count=0
def Move(self,n,A,C):
self.count=self.count+1
print("Count:",self.count," ",n," ",A,"=====>",C)
def HanoiTower(self,n,A,B,C):
if n==1:
self.Move(n,A,C)
else:
self.HanoiTower(n-1,A,C,B)
self.Move(n,A,C)
self.HanoiTower(n-1,B,A,C)
######################################
##运行测试代码
######################################
unitTest=UnitTest()
unitTest.HanoiTower(3,"柱子1","柱子2","柱子3")
递归实现代码简单,比较好理解,但是运行起来发现挺慢的,递归程序执行过程中,会占用很多的空间,而且递归次数过多,可能会导致栈溢出,甚至系统的奔溃,参阅了一些书籍和资料,以下是其他博客原话:
通常一个函数在调用另一个函数之前,要做如下的事情:
a)将实在参数,返回地址等信息传递给被调函数保存&