如何解答思路
答案的思路是怎样的?最高票的代码没说明递归中的C --> A 问题,有人知道完整思路么
答案的思路是怎样的?最高票的代码没说明递归中的C --> A 问题,有人知道完整思路么
2016-12-22
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) move(4, 'A', 'B', 'C')
这里 'A','B','C'三个柱子的地位是对称的
1.当柱子a上只有一个圆盘时,只要讲它从a移动到c就可以了;
2.当柱子a上面有n(n > 1)个圆盘时,假设我们已经拥有了能够完成功能的move函数,我们可以把这个问题分为以下三个步骤:
1)先将柱子b和c互换,然后调用函数move(n - 1,a,c,b),这样就可以把a上的 n - 1个盘子,放到b上,此时a上还剩1个盘子,b上有n - 1个盘子,c上没有盘子;
2)然后调用函数move(1,a,b,c)将a上的盘子放到c上,此时a上没有盘子,b上有n - 1个盘子,c上有1个盘子;
3)最后,将柱子b和a互换,调用函数move(n - 1,b,a,c)将b上的 n - 1个盘子放到c上,就完成了任务。
举报