看了知乎才明白汉诺塔算法到底怎么回事(lll¬ω¬)
因为A,B,C三个点算是固定的,就把这三个做成了默认参数,只用输入n就可以了。
顺便参考了下我楼下那位同学的计数功能,不要介意我抄袭哈哈。但是我还是不理解这个计数功能为什么要这么编,尤其是global s 这个变量是怎么回事?
代码如下:
s = 0
def move(n,a='A',b='B',c='C'): #move(盘子个数,起点,缓冲区,终点)
global s
if n == 1:
print (a,'-->',c)
s = s +1
return
else: #汉诺塔可以抽象为两个盘子((n-1)+1)
move (n-1,a,c,b)
move (1,a,b,c)
move (n-1,b,a,c)
人生如梦君不知
看了知乎才明白汉诺塔算法到底怎么回事(lll¬ω¬) 因为A,B,C三个点算是固定的,就把这三个做成了默认参数,只用输入n就可以了。 顺便参考了下我楼下那位同学的计数功能,不要介意我抄袭哈哈。但是我还是不理解这个计数功能为什么要这么编,尤其是global s 这个变量是怎么回事? 代码如下: s = 0 def move(n,a='A',b='B',c='C'): #move(盘子个数,起点,缓冲区,终点) global s if n == 1: print (a,'-->',c) s = s +1 return else: #汉诺塔可以抽象为两个盘子((n-1)+1) move (n-1,a,c,b) move (1,a,b,c) move (n-1,b,a,c)
n = int(input('请输入盘子数')) move(n) print (s)