我被要求实施“河内之塔”的递归,我的思想符合这个逻辑:
除了“Towers_of_hanoi(3,start,goal)”
之外,每个测试都通过了原来正确的实施是:
我已经学会了将递归视为一种解决问题的方法,就简单问题而言,在我看来,这两种实现都是这样做的。我的思维与正确的分解方法有什么根本的缺陷?
答案 0 :(得分:1)
关于河内之塔的事情是,你只能有3个堆栈,你不能把较大的磁盘放在较小的磁盘上,所以你需要确保你用作'缓冲区'的堆栈在进行递归调用之前,不包含任何较小的磁盘。在您的情况下,您将最小的磁盘移动到缓冲区,然后尝试递归以移动堆栈的其余部分,但由于缓冲区不可用,这将失败。