这个题真的不简单, 做了好久
Topic source我也稍微说一下吧, 先不管程序, 手写了 1 2 3 4 的情况, 然后不用递归方式, 用if elif 写出来, 就可以看出来了 简单的说, 就是, curMove(n, a, b, c)无论如何实现, 函数的意义就是, 把n个盘子, 从a挪到c(借助b的帮助). 5个盘子时, 我们先把4个盘子从a挪到b curMove((n-1), a, c, b) 再把最下面的盘子从a挪到c curMove(1, a, b, c) 再把b的4个盘子从b挪到c curMove((n-1), b, a, c) 4个盘子时, 我们先把3个盘子从a挪到b curMove((n-1), a, c, b) 再把最下面的盘子从a挪到c curMove(1, a, b, c) 再把b的3个盘子从b挪到c curMove((n-1), b, a, c) 3个盘子时, 我们先把2个盘子从a挪到b curMove((n-1), a, c, b) 再把最下面的盘子从a挪到c curMove(1, a, b, c) 再把b的2个盘子从b挪到c curMove((n-1), b, a, c) 2个盘子时, 我们先把1个盘子从a挪到b curMove((n-1), a, c, b) 再把最下面的盘子从a挪到c curMove(1, a, b, c) 再把b的1个盘子从b挪到c curMove((n-1), b, a, c) 1个盘子时, 只需要把盘子从a挪到c curMove(1, a, b, c) ...我觉得比较绕的是位置的相对变化, 每次递归之后, 相对来说, 函数执行的位置变化了, 不知道这么讲是否更好理解呢?
- 1
gylpnj