#感谢 闹闹QtoQ 提供的思路。
自己分析的时候过分纠结于n-1里面每一个具体是怎样移动的了。抽象的想,A柱上圆盘的数量一直是由底下最大的一个圆盘与上面(n-1)个圆盘所组成。n为多少个,以及(n-1)个圆盘具体是怎样移动的都无需纠结。那么这个过程就分为了三步: 1.将A上面的(n-1)个圆盘先移动到B 2.将A最大的一个圆盘移动到C 3.再将B上面的(n-1)个圆盘移动到C 虽然直观看着,这三步不满足汉诺塔移动的规则(一次只能移动一个圆盘),但是这就是递归函数的优势,你可以将其看做循环函数,省去了你中间思考的过程,程序会帮助你思考以及计算。 具体的作业示例如下: def move(n,a,b,c): if n == 1: print(a, '-->', c) else: move(n-1,a,c,b) move(1,a,b,c) move(n-1,b,a,c)
Sign in to make a reply
Vincent_胡小金
#感谢 闹闹QtoQ 提供的思路。