汉诺塔问题
说实话为了能够明确的理解原理 , 看了很多的博客 , 资料, 但是都是分析过程,然后给你一个 函数,说实话 这个函数, 有几个人一看就明白(大佬都不需要看的)
- 首先盘子的数量大于1, 才有必要移动盘子
- 直接看注释相信很多人都见过这个函数的,根据这个注释我相信很容易,自己就能写出这个函数
- 原理大家都知道就是递归,解决最小子问题,只是不明白具体函数参数的意义,以及执行流程
function hanio(n , a, b , c){
if(n >= 1){
hanio(n - 1, a, c, b);// 首先将 n-1个盘子从 a柱子借助c柱子移动到 b柱子
moveby(a, c); // 然后将 a柱子上的 n盘子 从 a柱子 移动到c 柱子 (这就是最大的盘子了)
hanio(n - 1, b, a, c); // 将 b柱子上的 n-1个盘子 全部从 b柱子 借助 a柱子 移动到c柱子
}
}
还不理解的话 那就 建议你看看这篇文章了
博客