汉诺塔是一个古老的益智游戏,它由三个塔构成,分别称为A、B、C。在A塔上从上到下按金字塔状叠放着n个不同大小的圆盘,要求将所有圆盘从A塔移到C塔,每次只能移动一个圆盘,且圆盘只能叠在比它大的圆盘上面。
Python汉诺塔递归详解:
汉诺塔是一个古老的益智游戏,它由三个塔构成,分别称为A、B、C。在A塔上从上到下按金字塔状叠放着n个不同大小的圆盘,要求将所有圆盘从A塔移到C塔,每次只能移动一个圆盘,且圆盘只能叠在比它大的圆盘上面。
汉诺塔的递归解法是:
1. 如果只有一个圆盘,则直接将其从A塔移到C塔;
2. 如果有n>1个圆盘,则将这n个圆盘看成两个部分:最底下的一个圆盘和上面的n-1个圆盘,将这n-1个圆盘移动到B塔上,再将最底下的一个圆盘移动到C塔上,最后将B塔上的n-1个圆盘移动到C塔上。
以上过程可以用下面的Python代码表示:
def hanoi(n, a, b, c):
if n == 1:
print(a, '-->', c)
else:
hanoi(n-1, a, c, b)
hanoi(1, a, b, c)
hanoi(n-1, b, a, c)
hanoi(3, 'A', 'B', 'C')
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(87条)