Welcome 微信登录

首页 / 脚本样式 / JavaScript / 用javascript编制一个递归算法来解决汉诺塔问题

用javascript编制一个递归算法来解决汉诺塔问题2013-04-11传说某间寺院有三根柱子,在创世之初,第一根柱子串有64个金盘,盘的尺寸由下到上一个比一个小。寺院里的僧侣依照一个古老的预言,每天移动一个盘;大盘不能叠在小盘上面,预言说盘子全部移动到到第三根柱子时,世界就会灭亡。

最少移动步数是随着盘子的个数呈指数增长(2^n-1)的。对指数增长有概念的同学应该能够看出移动64个盘子所需的步数是个天文数字,即使僧侣们每秒可完成一个盘子的移动,也需要5846亿年才能完成,整个宇宙现在也不过137亿年。这个世界灭亡传说的本意大概是在祝福世界不要灭亡吧。

在《猩球崛起》故事中就是用同样的问题来给猩猩们测智商,用了4个盘子。

四个盘子最少需要挪动2^4-1=15步,这只猩猩最快15步就完成了,难怪科学家们要大吃一惊了。

下面是一个有7个盘子的儿童玩具,最少需要2^7-1=127步完成。