汉诺塔问题规则:
- 每次移动一个子
- 任何时候大盘子在下面,小盘子在上面
编程思路:
- n=1:直接把A上的一个盘子移动到c上,A-->C
- n=2:A-->B A-->C B-->C
- n=3:
- 把A上的两个盘子,通过C移动到B上去,调用递归实现;
- 把A剩下的一个最大盘子移动到C上,A-->C;
- 把B上两个盘子,借助于A,揮到C上去,调用递归
4.n=n:
- A把A上的n1个盘子,借助于C,移动B上去,调用递归
- B把A上的最大盘子,也足一个,移动到C上,A>C
- c把B上n1个盟子:助于A,移动到C上,调用递归
def hanno(n,a,b,c):
if n==1:
print(a,"-->",c)
return hanno
hanno(n-1,a,c,b)
print(a,"-->",c)
hanno(n-1,b,a,c)