问题标签 [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.
algorithm - 在河内塔算法中,辅助是什么?
例如,在下面的汉诺塔算法中:
辅助假设代表什么?
python - 计算递归调用 - 河内塔
我正在研究一个处理河内塔问题的变体的问题,您只能移动到相邻的钉子,而我们仅限于 3 个钉子问题。我已经获得了打印出光盘数量所需移动的代码,但我无法弄清楚如何打印递归调用的数量。
towers-of-hanoi - 河内塔订购数字
河内塔的问题是我如何执行下面的?请帮我 !
haskell - 移动数量 Hanoi Haskell
我想知道如何在haskell中编写代码来了解 n个“圆盘”和3根棍子(A、B、C)的运动次数
基本情况(N=1):运动 A --> C 所以 1 运动
归纳案例(N = M+1):我移动 M 个圆盘“A”--->“C”,我移动 1 个圆盘“A”--->“B”,最后我从“C”移动 M 个圆盘到“B”。我认为解码代码可能是这样的:
不幸的是,这只适用于 numMoveHanoi 2 的情况。其他情况,结果是错误的。我不知道我的递归定义哪里错了。
感谢大家。
algorithm - 分析算法 - 递归方程(河内塔)
我在维基百科中看到了这个解决河内塔的递归算法。有人可以向我解释我如何得到这个算法的递归方程吗?
递归解决方案
- 标记钉子 A、B、C — 这些标签可能会以不同的步长移动
- 设 n 为磁盘总数
- 从 1(最小,最上面)到 n(最大,最下面)对圆盘进行编号
要将 n 个圆盘从桩 A 移动到桩 C:
- 将 n-1 个圆盘从 A 移动到 B。这使得圆盘 n 单独留在钉子 A 上
- 将圆盘 n 从 A 移动到 C
- 将 n-1 个圆盘从 B 移动到 C,使它们坐在圆盘 n 上
以上是递归算法,要执行步骤 1 和 3,对 n-1 再次应用相同的算法。整个过程是有限数量的步骤,因为在某些时候,n = 1 时需要算法。这一步,将单个圆盘从钉 A 移动到钉 B,是微不足道的。
java - 试图让用户输入正常工作
我有一个越来越接近完成的河内塔益智计划。我现在的问题是试图让用户的输入正常工作。
如果他们键入“v”或“V”,则将显示解决难题的步骤(因此输出将是“将光盘从 S 移动到 D”等等)。否则,如果用户没有键入“v”或“V”,则程序继续解谜,显示总步数但不显示步数。
我遇到的问题是选项没有像他们应该的那样工作。
现在唯一的问题是当用户输入'v'或'V'时,移动没有正确显示。输出:
如果用户键入“v”或“V”,我如何才能完成显示移动,如果用户键入除此之外的其他内容,则输出仅显示“总移动”?
这是我的代码:
java - 某些情况下的 if/else 语句
嗨,这是一个河内塔益智计划。现在,如果提示“输入光盘数量”为空白(即在未输入任何整数值的情况下按下回车键),我无法让程序解决 3 个光盘问题。
*我的 hanoi 方法中的 if/else 语句是我认为问题所在。我评论了我认为问题出在哪里。如果在提示“输入光盘数量”时未输入任何内容,如何让程序仅解决 3 张光盘?*
代码:
java - Java范围输入混淆
我今天制定了一个河内塔程序,对我来说最后一步是在我的代码中实现一个输入范围。
该程序将询问最小光盘数量和最大光盘数量。在这个范围内,程序应该解决这个范围内每个增加的光盘数量的难题。
示例(根据我的代码):
输入最小光盘数:3 输入最大光盘数:6
输出将分别求解 3、4、5 和 6 个圆盘。
范围现在正在工作,除非我输入说输入最小光盘数:3 输入最大光盘数:2 输出应该只解决最小光盘数,在这种情况下为 3 个光盘
代码:
java - 使用命令行参数完成河内程序?
我刚刚完成了我的河内塔计划。它完美无瑕,除了现在我需要以某种方式使它可以读取命令行参数(并产生与我的程序相同的结果)。我的程序执行与下面的输出完全相同的任务,我只是不知道如何使它们看起来像下面的示例,因为我从未使用过命令行参数。
无论如何,对我来说令人沮丧的是,一些示例输入应该如下所示:
java hanoi 3 6
将解谜 4 次,分别为 3、4、5 和 6 个磁盘。
java hanoi 3 2
将解决难题一次,为 3 个磁盘。
java hanoi dog 6
将解谜 4 次,分别为 3、4、5 和 6 个磁盘。
如何将我的程序转换为使用这样的命令行参数?
代码: