最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript递归函数实现“汉诺塔”

来源:懂视网 责编:小采 时间:2020-11-27 19:34:18
文档

JavaScript递归函数实现“汉诺塔”

JavaScript递归函数实现汉诺塔:这篇文章主要介绍了关于JavaScript递归函数实现汉诺塔,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下汉诺塔是一个著名的益智游戏。塔上有3根柱子和一套直径各不相同的空心圆盘。开始时柱子上的所有圆盘都按照从小到大的顺序堆叠。
推荐度:
导读JavaScript递归函数实现汉诺塔:这篇文章主要介绍了关于JavaScript递归函数实现汉诺塔,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下汉诺塔是一个著名的益智游戏。塔上有3根柱子和一套直径各不相同的空心圆盘。开始时柱子上的所有圆盘都按照从小到大的顺序堆叠。

这篇文章主要介绍了关于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递归函数实现“汉诺塔”

JavaScript递归函数实现汉诺塔:这篇文章主要介绍了关于JavaScript递归函数实现汉诺塔,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下汉诺塔是一个著名的益智游戏。塔上有3根柱子和一套直径各不相同的空心圆盘。开始时柱子上的所有圆盘都按照从小到大的顺序堆叠。
推荐度:
标签: 实现 js 函数
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top