Discuss / Python / 作业(感谢 闹闹QtoQ 提供的思路)

作业(感谢 闹闹QtoQ 提供的思路)

Topic source

#感谢 闹闹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) 

  • 1

Reply