def hanoi(n,x,y,z): if n == 1: print(x,'-->',c) else: hanoi(n-1,x,z,y)
#将前n-个盘子从x移动到y上 hanoi(1,x,y,z) #将第n个盘子从x移动到z上 hanoi(n-1,y,x,z)
#将y上的n-1个盘子从y移动到z上 n = int(input('请输入汉诺塔层数:')) hanoi = (n,'x','y','z')
学习Python中遇到的实际困难,汉诺塔程序,希望对大家有帮助,

详解如下:

最开始我遇到的困难时定义的hanoi()函数调用的过程中,x,y,z的顺序看不懂,其实换一种思想,

不论怎么移动,都可以将三根柱子分为,起始柱,辅助柱,目标柱

第一步:将n-1个盘子从x移动到y                      实际情况是:x为起始柱,z为辅助柱,y为目标柱

第二步:将第n个盘子从x移动到z                     实际情况是:x为起始柱,y为辅助柱,z为目标柱

第三步:将在y柱上的n-1个盘子从y移动到z      实际情况是:y为起始柱,x为辅助柱,z为目标柱

故调用结果为:

haooi  (n-1,x,z,y)

hanoi  (1,x,y,z)

hanoi  (n-1,y,x,z)

希望对大家有帮助!!!更多福利下方领取哦!

 

 

技术
©2019-2020 Toolsou All rights reserved,
程序员的520,送给女友的几行漂亮的代码(python版)基于stm32控制四轮小车电机驱动(一)linux查看磁盘空间命令实验四 自动化测试工具-软件测试axios拦截器封装与使用C语言——qsort函数opencv-python傅里叶变换以及逆变换在算法研究过程中如何进行算法创新nc的安装和简单操作C语言做一个简易的登陆验证(功能)界面