python汉诺塔
汉诺塔
目标:把n个盘子从开始位置/start(A),通过中间位置/middle(B),移动到目的位置/end(C)
效果图:
-------->
思路:
分三步:
一、把n-1从start(A)通过 middle(C)移动到 end(B) 效果图:
二、把第n个数从 start(A)移动到 end(C) 效果图:
三、把(n-1)整体从start(B),通过 middle(A),移动到 end(C) 效果图:
代码实现:
1 def hnt(start,middle,end,number): 2 ''' 3 :param start:开始位置 4 :param middle: 过渡位置 5 :param end: 目的位置 6 :param number: 盘子数量 7 :return: None 8 ''' 9 if number ==1: 10 print("把%s移动到%s"%(number,end)) 11 return 12 hnt(start,end,middle,number-1) 13 print("把%s移动到%s"%(number,end)) 14 hnt(middle,start,end,number-1) 15 16 n = int(input("请输入盘子数量").strip()) 17 hnt("A","B","C",n)
执行结果:
1 请输入盘子的数量:4 2 把1移动到B 3 把2移动到C 4 把1移动到C 5 把3移动到B 6 把1移动到A 7 把2移动到B 8 把1移动到B 9 把4移动到C 10 把1移动到C 11 把2移动到A 12 把1移动到A 13 把3移动到C 14 把1移动到B 15 把2移动到C 16 把1移动到C 17 18 Process finished with exit code 0