汉诺塔是一道经典的递归编程的经典题

题目要求:

汉诺塔问题来自一个古老的传说:在世界刚被创建的时候有一座钻石宝塔(塔A),其上有64个金碟。所有碟子按从大到小的次序从塔底堆放至塔顶。紧挨着这座塔有另外两个钻石宝塔(塔B和塔C)。从世界创始之日起,婆罗门的牧师们就一直在试图把塔A上的碟子移动到塔C上去,其间借助于塔B的帮助。每次只能移动一个碟子,任何时候都不能把一个碟子放在比它小的碟子上面。当牧师们完成任务时,世界末日也就到了。

首先我们分析一下,我们把n个盘子分割为俩个部分,n-1个盘子,和第n个盘子,我们首先将n-1个盘子由A移动到B,再将第n个盘子移动到C,而后我们再将n-1个盘子由B移动到C,实现n-1的过程与n相同,以此类推下去,就会得到我们想要的结果;

// index为需要花费多少次
function hanoi (n,towerA,towerB,towerC) {index++;if (n == 1) {console.log(towerA + "to" + towerC);} else {hanoi(n - 1,towerA,towerC,towerB);console.log(towerA + "to" + towerC);hanoi(n - 1,towerB,towerA,towerC);}
}
var towerA = "A";
var towerB = "B";
var towerC = "C";
var index = 0;
hanoi(3,towerA,towerB,towerC);
// 64次实现是太多了 我就以3为例子

javascript实现汉诺塔相关推荐

  1. javascript实现汉诺塔动画效果

    javascript实现汉诺塔动画效果 当初以为不用html5也很简单,踩了javascript单线程的大坑后终于做出来了,没事可以研究下,对理解javascript的执行过程还是很有帮助的,代码很烂 ...

  2. 汉诺塔实践python_汉诺塔的python 动画演示

    1.简介 古代有一座汉诺塔,塔内有3个座A.B.C,A座上有n个盘子,盘子大小不等,大的在下,小的在上,如图所示.有一个和尚想把这n个盘子从A座移到C座,但每次只能移动一个盘子,并且自移动过程中,3个 ...

  3. HT for Web 3D游戏设计设计--汉诺塔(Towers of Hanoi)

    在这里我们将构造一个基于HT for Web的HTML5+JavaScript来实现汉诺塔游戏. 汉诺塔的游戏规则及递归算法分析请参考http://en.wikipedia.org/wiki/Towe ...

  4. 汉诺塔的递归算法与解析

    前言 递归是一种强大的编程技术,他把一个问题分解为一组相似的子问题,每一问题都用一个寻常解去解决.递归函数就是会直接或者间接调用自身的一种函数,一般来说,一个递归函数调用自身去解决它的子问题. &qu ...

  5. html实现汉诺塔小游戏

    文章目录 1.设计来源 汉诺塔由来 1.1 主界面 1.2 游戏规则 1.3 游戏完成界面 2.效果和源码 2.1 动态效果 2.2 源代码 源码下载 作者:xcLeigh 文章地址:https:// ...

  6. 河内塔php,基于HTML5的WebGL设计汉诺塔3D游戏

    在这里我们将构造一个基于HT for Web的HTML5+JavaScript来实现汉诺塔游戏. 知道了汉诺塔的规则和算法,现在就开始创建元素.用HT for Web(http://www.hight ...

  7. 汉诺塔(三)_栈的应用

    问题 E: 汉诺塔(三) 时间限制: 3 Sec  内存限制: 128 MB 提交: 2  解决: 2 [提交][状态][讨论版] 题目描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北 ...

  8. 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)

    前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...

  9. Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有

    1 #include <stdio.h> 2 void hanoi(int s,char a,char b,char c) //a是出发盘,b是中途盘,c是结束盘 3 { 4 if(s== ...

最新文章

  1. apply的调用 http://bbs.51js.com/thread-82017-1-3.html
  2. TFS2012 服务器安装
  3. mac生成linux下可执行的.go二进制文件
  4. replace into mysql去重_上传 phpexcel 类 入库并入库前去重
  5. 我的前端教程,不断整理,反复学习,记录着那些年大学奋斗的青春
  6. 算法设计与分析(第四周)大整数相乘 分治法【不能解决溢出问题】
  7. EF使用CodeFirst创建数据库和表
  8. uni-app开发:tabar组件与顶部导航栏(功能开发篇)
  9. Asp.Net分页生成页码超链接方法
  10. WiFi 接口创建过程
  11. springboot中对各个层的理解以及流程
  12. 仓库管理系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  13. python字母转换_python中字母与ascii码的相互转换
  14. excel链接隐藏工作表_在Excel 2007和2010中隐藏和取消隐藏工作表和工作簿
  15. mysql基于WebStorm服装购物网站的设计与实现毕业设计源码281444
  16. 第十届蓝桥杯大赛软件赛省赛——Java大学A组
  17. 计算机毕业设计(51)java小程序毕设作品之教室图书馆座位预约小程序系统
  18. 理光Ricoh Aficio MP 2011LD 一体机驱动
  19. 单片机C51期末复习答案
  20. 今日芯声 | 中国开发者创建的repo正在破坏GitHub Trending?

热门文章

  1. 新手零基础快速入门Docker
  2. durbin watson检验表_Durbin-Watson自相关检验应用问题探讨
  3. gensim官方文档实践笔记
  4. 大漠多线程循环任务自动切换模板判断账号登陆成功
  5. 【python】OpenCV—Video to Imag / Image to Video
  6. iPhone14、iPhone14 Max和iPhone14 Pro的区别
  7. R语言建立神经网络过程
  8. 2011101401 洗練
  9. 分别计算二维数组主对角线元素与辅对角线元素的和。
  10. excel 分组排序,取前5