JavaScript汉诺塔问题解决方法

本文实例讲述了JavaScript汉诺塔问题解决方法。分享给大家供大家参考。具体实现方法如下:

<script language="javascript">
 var han=function (disc,src,aux,dst){
  if(disc>0){
   han(disc-1,src,dst,aux);
   document.writeln("move disc "+disc+" from "+src+" to "+dst+"<br/>");
   han(disc-1,aux,src,dst);
  }
 };
 han(10,"src","aux","dst");
</script>

希望本文所述对大家的javascript程序设计有所帮助。

(0)

相关推荐

  • JavaScript中的关联数组问题

    复制代码 代码如下: var beatles = ["john","Paul","George","Ringo"]; 上面中的beatles数组是个传统数组典型的例子:每个元素的下标是一个数字,每增加一个元素,这个数字就依次增加1.第一个元素的下标是0,第二个元素的下标是1.以此类推. 如果在填充数组时只给出了元素的值,这个数组就将是一个传统数组,它的各个元素的下标将被自动创建和刷新. 可以通过在填充数组时为每个新元素明确地给

  • 探寻Javascript执行效率问题

    Javascript是一门非常灵活的语言,我们可以随心所欲的书写各种风格的代码,不同风格的代码也必然也会导致执行效率的差异,开发过程中零零散散地接触到许多提高代码性能的方法,整理一下平时比较常见并且容易规避的问题 Javascript自身执行效率 Javascript中的作用域链.闭包.原型继承.eval等特性,在提供各种神奇功能的同时也带来了各种效率问题,用之不慎就会导致执行效率低下. 1.全局导入 我们在编码过程中多多少少会使用到一些全局变量(window,document,自定义全局变量等

  • JavaScript实现N皇后问题算法谜题解答

    谜题 N皇后问题.将N个皇后放置在NxN的国际象棋棋盘上,其中没有任何两个皇后处于同一行.同一列或同一对角线上,以使得它们不能互相攻击. 策略 回溯法. JavaScript解 以8皇后问题为例: 复制代码 代码如下: /**  * Created by cshao on 12/28/14.  */ function getNQueens(order) {   if (order < 4) {     console.log('N Queens problem apply for order b

  • JavaScript使用指针操作实现约瑟夫问题实例

    本文实例讲述了JavaScript使用指针操作实现约瑟夫问题的方法.分享给大家供大家参考.具体分析如下: 实现之前当然要自己来编写一些 JS 数组内部指针的操作函数,就像:reset(), current(), next(), prev(), search(), end() 这些函数,我们都要来自己实现,因为 JS 没有内置这些神奇的操作函数 Array.prototype.pointer = 0;//模拟数组内部指针 //Reset 函数,将数组内部指针归位(指向第一个元素) var rese

  • 浅谈Javascript变量作用域问题

    Js中的变量作用域问题: 1.没有块级作用域.Js中的变量作用域不是以{}为界的,不像C/C++/Java. 如: 复制代码 代码如下: if(true){      var name = "qqyumidi";  }               alert(name);  // 结果:qqyumidi Js会将在if中定义的变量添加到当前的执行环境中,尤其在使用for循环时需要注意与其他语言的差异. 复制代码 代码如下: for(var i=0; i<10; i++){    

  • 深入分析Javascript跨域问题

    跨域是什么? 假设a.com/get.html需要获取b.com/data.html中的数据,而这里a.com和b.com并不是同一台服务器,这就是跨域跨域会涉及到Javascript的同源策略,简单来说就是为了保护网站的安全,不被外域(非同源)服务器的js修改本网站内容. 引用一个表格,看一下引起跨因的条件有哪些: 但是有时候我们确实需要这么做,那么我们有哪些方法呢? 1.JsonP 提到跨域不能不先提及jsonp.jsonp其实是JavacScript Object Notation wit

  • JavaScript的内存释放问题详解

    本文详细的讲解了JavaScript及IE浏览器对内存的管理和释放的时机和方法,希望对前端开发人员有所帮助. 一个内存释放的实例 复制代码 代码如下: <SCRIPT LANGUAGE="JavaScript"> <!-- strTest = "1"; for ( var i = 0; i < 25; i ++ ) { strTest += strTest; } alert(strTest); delete strTest; CollectG

  • Javascript字符串浏览器兼容问题分析

    本文实例分析了Javascript字符串浏览器兼容问题.分享给大家供大家参考.具体分析如下: 先看下不兼容的写法,若我想获取某个字符串的第几位 复制代码 代码如下: var str='aavvvcc'; console.info(str[0]); 这种写法 在IE 7以下的浏览器都不兼容,以下提供浏览器全兼容的方式 复制代码 代码如下: var str='aavvvcc'; console.info(str.charAt(1)); 使用charAt() 就可以获取字符串中某个字符,并且全部兼容.

  • JavaScript汉诺塔问题解决方法

    本文实例讲述了JavaScript汉诺塔问题解决方法.分享给大家供大家参考.具体实现方法如下: <script language="javascript"> var han=function (disc,src,aux,dst){ if(disc>0){ han(disc-1,src,dst,aux); document.writeln("move disc "+disc+" from "+src+" to "

  • Java用递归方法解决汉诺塔问题详解

    目录 前言 一.问题描述 二.问题分析 三.解决方案 四.示例 前言 博主之前有写过关于递归问题的思维模式: 递归的思路 下面将用这种思维模式来求解经典汉诺塔问题. 一.问题描述 汉诺塔(又称河内塔)问题是源于印度一个古老传说.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘. 大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上. 并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘. 问应该如何操作? 玩法如下: 1.有三

  • python实现汉诺塔方法汇总

    学习python遇到的第一个问题:汉诺塔问题的实现.首先是不知道什么是汉诺塔问题,然后是不知道怎么实现.于是百度了下,结果如下: 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘 方法一: def move(n,a,b,c) # n=2 if n==1 :

  • PHP递归实现汉诺塔问题的方法示例

    本文实例讲述了PHP递归实现汉诺塔问题的方法.分享给大家供大家参考,具体如下: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘.简而言之,有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,

  • JavaScript递归函数解“汉诺塔”算法代码解析

    "汉诺塔"是一个著名的益智游戏.塔上有3根柱子和一套直径各不相同的空心圆盘.开始时柱子上的所有圆盘都按照从小到大的顺序堆叠.目标是通过每次移动一个圆盘到另一根柱子,最终把一堆圆盘移动到目标柱子上,过程中不允许把交大的圆盘放置在较小的圆盘之上. 仔细解读这段话,如果有10个圆盘甚至更多,那操作步骤绝对多到让人震惊,但目标是把一堆圆盘移动到目标柱子上,如果把上面的9个圆盘看成一套,第10个圆盘看成另一套,先移动9个圆盘到另一根柱子上,再把上面8个圆盘看成一套,第9个圆盘看成另一套--依次类

  • JavaSE递归求解汉诺塔问题的思路与方法

    目录 1. 汉诺塔的介绍和玩法 2. 汉诺塔问题的思路 3. 用递归的代码实现 总结 1. 汉诺塔的介绍和玩法 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具. 一共有3根柱子(A.B.C),A柱子由下到上放着由大到小的盘子,我们需要将A柱子上的盘子移到C柱子上,每次只能移动一个盘子,且在任意一次移动中,大盘子都必须处于小盘子下方. 2. 汉诺塔问题的思路 若A柱子上只有1个盘子,只需要移动1步:A->C 若A柱子上有2个盘子,需要移动3步:A->B,A-

  • python 实现汉诺塔游戏

    一.汉诺塔问题 1. 问题来源 问题源于印度的一个古老传说,大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘. 2. 问题阐述 塔内有三个座A.B.C,A座上有64个盘子,盘子从上到下逐渐变大,最下面的盘子最大.目前要把A座的64个盘子从A座移到C座,并且每次只能移动一个盘子,移动过程中三个座保持大盘子在下,小盘子在上,

  • C#利用递归算法解决汉诺塔问题

    目录 一.什么是递归 二.汉诺塔问题 1.汉诺塔的故事 2.解决思路 3.怎么解决汉诺塔问题 4.具体代码实现 三.完整代码 一.什么是递归 方法调用自己的行为就是递归,递归必须要有终止条件,不然它会无限递归. 1.先来看一下一个递归的例子 此程序的Fact方法从大到小地一级一级地调用自己,直到参数为1,然后就开始返回一级一级的从小到大地累乘,然后就计算出number的阶乘了. static int Fact(int num) { if (num <= 1) { return num; } el

  • C++基于递归算法解决汉诺塔问题与树的遍历功能示例

    本文实例讲述了C++基于递归算法解决汉诺塔问题与树的遍历功能.分享给大家供大家参考,具体如下: 递归是把问题转化为规模缩小的同类问题,然后迭代调用函数(或过程)求得问题的解.递归函数就是直接或间接调用自身的函数. 递归两要素:递归关系和递归边界(终止条件),递归关系确定了迭代的层次结构,需要深入了解并分解问题:终止条件保证了程序的有穷性. 递归的应用有很多,常见的包括:阶乘运算.斐波那契数列.汉诺塔.数的遍历,还有大名鼎鼎的快排等等.理论上,递归问题都可以由多层循环来实现.递归的每次调用都会消耗

  • Java数据结构及算法实例:汉诺塔问题 Hanoi

    /** * 汉诺塔大学的时候就学过,但是根本没搞明白,唯一知道的就是要用递归的方法来求解. * 问题描述: * 有三根杆子A,B,C.A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小. * 要求按下列规则将所有圆盘移至C杆: * 1.每次只能移动一个圆盘: * 2.大盘不能叠在小盘上面. * 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆, * 但都必须尊循上述两条规则. * 问:如何移?最少要移动多少次? * 解决方法: * 假设只有2个盘子,柱子分别是A, B, C柱

随机推荐