问题标签 [towers-of-hanoi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
240 浏览

lisp - '('(LIST) 'NIL 'NIL) 应该是 (hanoi('('(list)'()'()))) 中的 lambda 表达式

我正在尝试实现河内塔。我还没有在递归调用之间打印出任何东西,但我一直收到错误消息

'('(LIST) 'NIL 'NIL) 应该是一个 lambda 表达式

我已经读到发生这种情况的原因是因为括号有问题,但是我似乎无法找到我的问题。我认为pass-list当我尝试调用函数时它正在函数中发生hanoi。我的代码:

0 投票
2 回答
294 浏览

java - 河内塔;递归方法意味着方法永远不会完成?

我正在学习递归,经典的例子是河内塔。然而,我有点难过,上面代码片段中的注释行。

如果方法在第一个注释代码处重新启动,该程序如何到达第二个注释代码?类似下面的东西来说明:

3如果重新启动该功能,它怎么能达到2?河内塔片段也是如此:它是如何到达第二个注释代码的?

0 投票
7 回答
313 浏览

performance - 这个解决开放难题的方法是否正确?

我相信我已经解决了复杂性理论中的一个开放问题,但我想确保它是正确的。

我的问题是:“随着塔的数量增加,解决河内塔谜题需要多少步?”

显而易见的是,如果“磁盘”的数量保持有界,那么运行时间会渐近接近O(n),其中 n 是“磁盘”的数量。这比原来的要好很多O(2^n)

我发现运行时间是磁盘O(2^n^(1/k))的数量,钉子的数量,取幂(运算符)是右关联的。虽然,这是因为一个奇怪的现象,其中存在运行时间线性增加然后改变斜率的离散点。所以总而言之,运行时间摊销了。nk^ O(2^n^(1/k))

如果您对此感到好奇并想自己阅读证明,我建立了一个网站,您可以在此处找到它。(如果该链接无法访问,请尝试github。尽管您需要访问必要的工具来构建它)

因为我知道有人会问我“我为什么不把它交给我的教授?”或者类似的其他问题。答案是我不隶属于任何大学/学院,我还在上高中。

任何帮助都非常感谢,在此先感谢您。

注意:此问题已在此处的 Math Overflow 上重新发布

注意:当对论文进行推荐的格式编辑时,将针对将发布的新问题发布另一个赏金,因为我正在寻找对论文内容而不是易读性的批评。

0 投票
1 回答
303 浏览

c - 具有 k 个钉子的河内塔谜题的最优 C 实现

当有 k 个钉子时,你如何解决河内塔谜题?可以在C中以最佳方式完成吗?有贪心算法吗?

0 投票
1 回答
3646 浏览

recursion - 计划中的河内塔(递归)

我今天在scheme中写了以下代码,但是评估错误。请不要告诉我我编程很烂,我知道这是一个经典的递归问题,但我遇到了麻烦:

我希望代码能够工作,但当我调试它时,我只会让自己更加困惑。谁能帮我?

0 投票
1 回答
2258 浏览

algorithm - 河内塔的变化(双塔)

我正在尝试解决河内塔的变体。在这种情况下,我有两个塔,高度相同,磁盘大小相同。只要磁盘大小相同或更小,我就可以将它们堆叠在一起。颜色不考虑堆叠能力。

我有三个钉子和两个塔,任务是交换两个塔。

我最初的方法是用交替的颜色建造一座塔,然后用不同的钉子向后移动。

我只是认为这不是最优雅的解决方案。有一个更好的方法吗?

更新:
我以为我很接近解决这个问题,但我没有。我在纸上记录了所有的动作(对于 n=3),它看起来与原始算法非常相似,只是很多动作都完成了两次。不幸的是,我无法将其放入递归算法中。这很令人沮丧。有人有想法吗?

0 投票
1 回答
584 浏览

java - 当环到达第三塔时,河内的 Android AndEngine 塔会弹出“游戏结束”

我无法成功输出“游戏结束!” 当戒指到达第三座塔时。请问您对如何做到这一点的意见?

我遵循了“ http://www.raywenderlich.com/12065/how-to-create-a-simple-android-game ”的教程,其中不包含“游戏结束”,我正在找到它很难添加一个,因为我是 android 编程新手。

}

0 投票
3 回答
412 浏览

android - 添加计数器到河内塔Android Andengine APP

我用安卓和AndEngine制作了一个河内塔游戏。我想知道是否有人知道如何使用“scene.attachChild”作为显示动作的人。它仅在我移动一个环时显示,并且一旦我继续移动环,它就会堆叠(覆盖最后一个文本的文本)。

我希望它在我开始游戏时显示为“Moves:”,并且每次移动都会增加+1,并且不会堆叠。谁能帮我?很多帮助将不胜感激。

这是计数器的代码:

这是文本显示的代码:

0 投票
2 回答
492 浏览

java - 如何向后实现递归算法

我正在尝试解决河内塔问题的变体,其中有三个钉子,但两个塔的高度和磁盘大小相同。任务是交换两个塔。

我的解决方案是将两个塔堆叠在一起成为一个大塔(相同大小的磁盘可以堆叠在彼此的顶部)并再次将它们分开(当然是交换钉)。

我能够将两座塔堆叠在一起,但我无法反转我的算法以再次将它们分开。

在这种情况下,有两个塔,每个塔都有三个磁盘。一个在左边,一个在中间。在我的算法之后,有一个塔,右边有六个圆盘。

我的算法如下:(我使用的是Java)

那么我该如何用这个splitUp方法来逆转呢?

0 投票
2 回答
183 浏览

android - AndEngine Android Tower of Hanoi 在移动计数达到 10 时出错

我想知道为什么当移动计数达到 10 时代码会出现故障。谁能帮我确定导致错误的原因以及如何修复它?我一直在想,因为它所做的只是计数,但是当它达到 10 时它会以某种方式出现故障。