非常感谢楼上几位的答案和鸟蛋兄分享那篇文章,现在总算想明白了。
首先n = (n-1) + 1嘛,于是把“n”分解成“n-1”和“1”两块。
汉诺塔这个游戏的规律就是先把a上面最后一块“1”的上面所有的东西“n-1”全部想办法移到b上面,然后把最后一块“1”移到c上面,最后把“n-1”想办法移到c上面就完成了。简单来想就是这样。
当n正好等于1的时候从a直接移到c上就行了,否则就要像上面说的那样去做了。
def move(n, a, b, c): if n == 1: print('move', a, 'to', c) return else: move(n-1, a, c, b) move(1, a, b, c) move(n-1, b, a, c) move(3, 'A', 'B', 'C')
具体细节的我真的懒得去想,脑细胞都死光了(:з」∠)
Sign in to make a reply
半分幻的凶鳥
非常感谢楼上几位的答案和鸟蛋兄分享那篇文章,现在总算想明白了。
首先n = (n-1) + 1嘛,于是把“n”分解成“n-1”和“1”两块。
汉诺塔这个游戏的规律就是先把a上面最后一块“1”的上面所有的东西“n-1”全部想办法移到b上面,然后把最后一块“1”移到c上面,最后把“n-1”想办法移到c上面就完成了。简单来想就是这样。
当n正好等于1的时候从a直接移到c上就行了,否则就要像上面说的那样去做了。
具体细节的我真的懒得去想,脑细胞都死光了(:з」∠)