python--汉诺塔问题
2021-06-18 23:06
标签:分享图片 直接 一个 调用 turn div 运行 规则 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上,调用递归 运行结果: A --> C python--汉诺塔问题 标签:分享图片 直接 一个 调用 turn div 运行 规则 python 原文地址:https://www.cnblogs.com/Slxc/p/9705790.html 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 --> B
C --> B
A --> C
B --> A
B --> C
A --> C