JavaScript递归函数解“汉诺塔”详解编程语言
JavaScript编程语言 详解 递归函数 汉诺塔
2023-06-13 09:20:36 时间
“汉诺塔”是一个著名的益智游戏。塔上有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根柱子。当它调用资深的时候,它去处理当前正在处理的圆盘之上的圆盘。最终,它会以一个不存在的圆盘编号去调用。在这样的情况下,它不执行任何操作。由于该函数对非法值不予理会,也就不用担心会导致死循环。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/12308.html
cjava相关文章
- JavaScript实现限时抢购实例详解编程语言
- JavaScript实现String的trim函数详解编程语言
- JavaScript 模仿Java的Map集合,实现功能详解编程语言
- JavaScript实现含节日、农历的日历详解编程语言
- 对javascript中String类型的拓展详解编程语言
- JavaScript控制输入框中只能输入中文、数字和英文详解编程语言
- JavaScript学习总结(十六)——Javascript闭包(Closure)详解编程语言
- 《JavaScript DOM编程艺术》学习笔记(二)详解编程语言
- 学习Html、css和Javascript中的常用标签英文缩写笔记(可供同学们参考)详解编程语言
- JAVASCRIPT如何判断数组中有重复内容详解编程语言
- 浅谈javaScript的数据类型详解编程语言
- javascript中如何使用bind()方法详解编程语言
- js、javascript操作json总结详解编程语言
- JAVASCRIPT使用ajax做异步上传文件详解编程语言
- JavaScript 中函数的定义和调用详解编程语言
- JavaScript数据类型-数值(number)和字符串(string)详解编程语言
- 混rao加密 javascript的方法详解编程语言
- javascript获取时间戳的方法详解编程语言
- javascript异步上传压缩图片并立即显示图片详解编程语言
- javascript 面向对象编程之继承详解编程语言
- javascript针对DOM的应用分析(三)