工作做ppt课件的网站,物业管理网站开发背景,格子网wordpress主题,酒店电子商务网站建设流程前情提要#xff1a; 首先说一下汉诺塔游戏的规则#xff1a;如下图所示#xff0c;有三个柱子A,B,C,我们要做的是把A柱的所有圆盘#xff0c;全部转移到C柱上#xff0c;转移时遵循的规则如下#xff1a; 1、每次只能移动一个圆盘 2、所有的大圆盘必须在小圆盘的下面 过…前情提要 首先说一下汉诺塔游戏的规则如下图所示有三个柱子A,B,C,我们要做的是把A柱的所有圆盘全部转移到C柱上转移时遵循的规则如下 1、每次只能移动一个圆盘 2、所有的大圆盘必须在小圆盘的下面 过程分析 首先假设只有一个圆盘我们将其编号为1如下图所示那么这时候只需要将A直接移到C即可 再假设有两个圆盘我们看到移动过程如下 步骤1先将1号盘从A移动到B 步骤2再将2号盘从A移动到C 步骤3最后将1号盘从B移动到C完成转移。 好了请读者有点耐心我们再看看三个圆盘的转移过程是怎样进行的此处用文字进行描述请读者发挥想象 首先三个圆盘放在A柱上按从上到下的顺序依次编号为1,2,3最小的为1最大的为3我们先不考虑3号盘而只考虑上面两个小一点的圆盘编号1,2而此前我们已经分析了两个圆盘的移动过程那么这两个圆盘该移动到哪根柱子呢目前只有B柱,C柱可选而C柱肯定不行因为C柱是目标柱那么我们只能把1,2号盘从A柱移动到B柱借助C柱则移动过程为A-C, A-B,C-B。此时1,2号盘已经到达B柱再把最大的三号盘直接移到C柱。此时工作快要完成了目前的状态为1,2号盘在B柱3号盘已到达目的柱C柱再接下来把12号盘将B柱移动到C柱转移工作就彻底结束借助A柱转移过程为B-A,B-C,A-C。 通过上面第一段加红的文字我们可以知道A是作为起始柱B作为目标柱C作为辅助柱通过第二段加红文字我们可以知道B是作为起始柱A作为辅助柱C作为目标柱。 那么此时函数的写法在脑海里大概就有了形状 函数定义 根据上面的分析我们知道函数的参数有盘子A,B,C三个柱子所以函数的签名为move(n, a, b, c)。其中n表示圆盘的个数a表示起始柱b表示辅助柱c表示目标柱。 根据上面对三个圆盘的分析可得函数定义如下Python代码 1 def move(n, a, b, c):
2 if n 1:
3 print a -- c
4 return
5 move(n - 1, a, c, b)
6 print a -- c
7 move(n - 1, b, a, c) 代码解释 当n1时即当只有一个圆盘时直接输出a - c,即将圆盘从A移动到C对应第2,3行代码 当n1时就先处理前n-1个圆盘将前n-1个圆盘从a移动到b柱借助c柱对应第5行代码然后将第n个圆盘从a柱移动到c柱对应代码第6行最后将剩下的n-1个圆盘将b柱移动到c柱借助a柱递归思想请读者联合上面对三个圆盘的分析仔细斟酌 调用代码如下4个圆盘 1 move(4, A, B, C) 结果如下 A--B
A--C
B--C
A--B
C--A
C--B
A--B
A--C
B--C
B--A
C--A
B--C
A--B
A--C
B--C 转载于:https://www.cnblogs.com/HeZhengfa/p/10245109.html