汉诺塔 --- 递归的经典运用

<!--- 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。<br />大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。<br />大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,<br />在三根柱子之间一次只能移动一个圆盘。(-------摘自百度百科) ---><br /><br /><br /> 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             //f(n) = f(n-1)+n
 9             
10             function hannoi(n,a,b,c){
11                 if(n == 1){
12                     //console.log('把第1个盘子从'+a+'移动到'+c)
13                 }else{
14                     hannoi(n-1,a,c,b);
15                     //console.log('把第'+n+'个盘子从'+a+'移动到'+c);
16                     hannoi(n-1,b,a,c);
17                 }
18                 
19             }
20             
21             hannoi(64,'A','B','C');
22             
23             
24         </script>
25     </head>
26     <body>
27     </body>
28 </html>

递归的学习总结:

1.先找临界值,即无需计算,就能获取的值。

2.找 本次 和上一次 的关系即 f(n)和f(n-1)

3.假设,当前函数已经可以使用了,调用自身计算上一次的运行结果,

再写出本次运行结果 即可

function sum(n){
                //alert(n);
                //临界条件
                if(n == 1){
                    return 1;
                }
                
                //f(n) = f(n-1)+n
                return sum(n-1)+n;
            }
            
            
            var res =  sum(100);
            console.log(res)

上述为100以内正整数和的运算。

相关推荐