def hanoi(n, A, B, C): if n <= 0: print('盘子数目必须为正整数!') elif n == 1: print('将{0}最上面的盘子移动到{1}'.format(A, C)) else: hanoi(n - 1, A, C, B)
# 递归调用函数本身,将A上面的n-1个盘子借助C移动到B。 hanoi(1, A, B, C) # 调用n==1时的执行语句,将A剩下的最下面的盘子移动到C。 hanoi(n - 1, B, A, C) # 再递归调用函数本身吧,将B的n-1个盘子借助A移动到C
hanoi(4, 'A', 'B', 'C')
output:
将A最上面的盘子移动到B 将A最上面的盘子移动到C 将B最上面的盘子移动到C 将A最上面的盘子移动到B 将C最上面的盘子移动到A 将C最上面的盘子移动到B 将A最上面的盘子移动到B 将A最上面的盘子移动到C 将B最上面的盘子移动到C 将B最上面的盘子移动到A 将C最上面的盘子移动到A 将B最上面的盘子移动到C 将A最上面的盘子移动到B 将A最上面的盘子移动到C 将B最上面的盘子移动到C
Sign in to make a reply
霁天13
def hanoi(n, A, B, C): if n <= 0: print('盘子数目必须为正整数!') elif n == 1: print('将{0}最上面的盘子移动到{1}'.format(A, C)) else: hanoi(n - 1, A, C, B)
hanoi(4, 'A', 'B', 'C')
output:
将A最上面的盘子移动到B 将A最上面的盘子移动到C 将B最上面的盘子移动到C 将A最上面的盘子移动到B 将C最上面的盘子移动到A 将C最上面的盘子移动到B 将A最上面的盘子移动到B 将A最上面的盘子移动到C 将B最上面的盘子移动到C 将B最上面的盘子移动到A 将C最上面的盘子移动到A 将B最上面的盘子移动到C 将A最上面的盘子移动到B 将A最上面的盘子移动到C 将B最上面的盘子移动到C