汉诺塔问题
1.问题来源:汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从上往下从小到大顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一回只能移动一个圆盘,只能移动在最顶端的圆盘。
2.问题分析:
1 # -*- coding: utf-8 -*- 2 # Hanoi_Tower.py 3 # @author 0yst3r 4 # @description 5 # @created Tue Apr 16 2019 11:25:35 GMT+0800 (中国标准时间) 6 # @last-modified Tue Apr 16 2019 14:29:13 GMT+0800 (中国标准时间) 7 # 8 9 i = 0 10 11 12 def Num(): 13 global i 14 i = i + 1 15 return i 16 17 18 def move(n, a, b, c): 19 if n == 1: 20 print(a, ‘->‘, c) 21 Num() 22 23 else: 24 move(n - 1, a, c, b) 25 print(a, ‘->‘, c) # move(1, a, b, c) 26 move(n - 1, b, a, c) 27 Num() 28 29 30 n = eval(input("请输入盘子的个数:")) 31 print(‘移动步骤如下:‘) 32 print(move(n, ‘A‘, ‘B‘, ‘C‘)) 33 print(‘移动总次数为:‘, i)
运行结果:
输入 n=3
汉诺塔问题(Hanoi Tower)递归算法解析(Python实现)
原文:https://www.cnblogs.com/0yst3r-2046/p/10716970.html