python--汉诺塔问题
Posted slxc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python--汉诺塔问题相关的知识,希望对你有一定的参考价值。
-汉诺塔问题
-规则:
1、每次只能移动一个盘子
2、任何一次移动,三个塔的状态必须是小盘子在上,大盘子在下
-方法:
1, n = 1 :直接把A上的盘子移动到C上,A->C
2, n = 2:
1.把小盘子从A放到B上,A->B
2.把大盘子从A放到C上,A->C
3.把小盘子从B放到C上,B->C
3,n = 3 :
1.把A上的两个盘子,通过C移动到B上去(同2),调用递归实现
2.把A上剩下的一个最大移动到C上, A->C
3.把B上两个盘子借助A挪到C上,调用递归
4,n = n:
1.把A上的n-1个盘子,借助于C移动到B上去,调用递归
2.把A上的最大盘子,也是唯一一个,移动到C上,A->C
3.把B上的n-1个盘子借助A移动到C上,调用递归
1 def hano(n, a, b, c): 2 ‘‘‘ 3 汉诺塔的递归实现 4 :param n: 代表几个盘子 5 :param a: 代表a塔,开始的塔 6 :param b: 代表b塔,中间过渡塔 7 :param c: 代表c塔,目标塔 8 :return: 9 ‘‘‘ 10 if n == 1: 11 print(a, "-->", c) 12 return None 13 ‘‘‘ 14 if n == 2: 15 print(a, "-->", b) 16 print(a, "-->", c) 17 print(b, "-->", c) 18 return None 19 ‘‘‘ 20 #把n-1个盘子,从a塔借助于c塔,挪到b上去 21 hano(n-1, a, c, b) 22 print(a, "-->", c) 23 #把n-1个盘子,从b塔,借助于a塔挪到c塔上去 24 hano(n-1, b, a, c) 25 26 a = "A" 27 b = "B" 28 c = "C" 29 n = 3 30 hano(n, a, b, c)
运行结果:
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
以上是关于python--汉诺塔问题的主要内容,如果未能解决你的问题,请参考以下文章