def move(n, a, b, c):
定义一个函数(包含4个变量,盘子数n,和三个柱子a,b,c)
if n==1:
print a,'-->',c 当只有1个盘子时,直接从柱子a移动到柱子c
return
else:
move(n-1,a,c,b) 把柱子a上的n-1个盘子通过柱子c移动到柱子b上
else:
move(n-1,a,c,b) 把柱子a上的n-1个盘子通过柱子c移动到柱子b上
move(1,a,b,c) 把柱子a上最后1个盘子移到柱子c上
move(n-1,b,a,c) 把柱子b上的n-1个盘子通过柱子a移动到柱子c上
print move(4, 'A', 'B', 'C')
move(n-1,b,a,c) 把柱子b上的n-1个盘子通过柱子a移动到柱子c上
print move(4, 'A', 'B', 'C')
黄色部分:递归算法的函数定义
紫色部分:函数调用
def move(n, a, b, c):
if n==1:
print a,'-->',c
return
else:
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
print move(4, 'A', 'B', 'C')
本文介绍了一个经典的递归算法实现——汉诺塔问题。通过定义move函数并使用递归调用的方式解决了将不同数量的盘子从一个柱子移动到另一个柱子的问题,并展示了如何通过递归思想简化复杂问题。
2584

被折叠的 条评论
为什么被折叠?



