JavaScript中递归函数解“汉诺塔”算法的示例分析

发布时间:2021-06-26 10:14:38 作者:小新
来源:亿速云 阅读:158

小编给大家分享一下JavaScript中递归函数解“汉诺塔”算法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

“汉诺塔”是一个著名的益智游戏。塔上有3根柱子和一套直径各不相同的空心圆盘。开始时柱子上的所有圆盘都按照从小到大的顺序堆叠。目标是通过每次移动一个圆盘到另一根柱子,最终把一堆圆盘移动到目标柱子上,过程中不允许把交大的圆盘放置在较小的圆盘之上。

仔细解读这段话,如果有10个圆盘甚至更多,那操作步骤绝对多到让人震惊,但目标是把一堆圆盘移动到目标柱子上,如果把上面的9个圆盘看成一套,第10个圆盘看成另一套,先移动9个圆盘到另一根柱子上,再把上面8个圆盘看成一套,第9个圆盘看成另一套……依次类推,分解移动,递归函数的思想就体现出来了。

完成代码,非常简单的写法,不知道还有没有更简单的写法?

var hanoi = function {disc, begin, end, helper) {
 if (disc > 0) {
  hanoi(disc - 1, begin, helper, end);
  document.writeln('移动圆盘 ' + disc + ' 从 ' + begin + ' 到 ' + helper);
  hanoi(disc - 1, end, begin, helper);
 }
};
hanoi(3, '柱子一', '柱子二', '柱子三');

圆盘数量为3时的输出:

  移动 1 从 柱子一 到 柱子三
  移动 2 从 柱子一 到 柱子二
  移动 1 从 柱子三 到 柱子二
  移动 3 从 柱子一 到 柱子三
  移动 1 从 柱子二 到 柱子一
  移动 2 从 柱子二 到 柱子三
  移动 1 从 柱子一 到 柱子三

传递给hanoi函数的参数包括当前移动的圆盘编号和它将要用到的3根柱子。当它调用资深的时候,它去处理当前正在处理的圆盘之上的圆盘。最终,它会以一个不存在的圆盘编号去调用。在这样的情况下,它不执行任何操作。由于该函数对非法值不予理会,也就不用担心会导致死循环。

以上是“JavaScript中递归函数解“汉诺塔”算法的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. python汉诺塔
  2. 汉诺塔递归算法&分析过程

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

js

上一篇:ES的安装教程

下一篇:zk集群版服务启动实现Leader和Follower之间数据交互

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》