递归 汉诺塔问题

来源:互联网 发布:海文网络计划软件教程 编辑:程序博客网 时间:2024/06/08 16:08


所谓递归,就是在函数内部又去调用自己

例如:求阶乘问题,在fact函数内部又去调用fact函数

functionfact(n){
    if(1==n){
        return1;
    }
    returnn*fact(n-1);
}
alert(fact(5));

递归的算法如果按照常规思路去理解是非常复杂的,函数调用一层一层嵌套调用,然后又一层一层返回。不妨慌思路去理解递归

递归实际上就是将规模为你的问题降阶为n-1的问题进行求解。也就是去找nn-1关系

 

<script>/*汉诺塔问题:函数功能:将n 个盘子从源柱,借助于辅助柱,移到目标柱输入参数:n 盘子的个数src 源柱aux 辅助柱dst 目标柱 */    function hanoi(n,src,aux,dst){        if(1==n){            document.write(src+"→"+dst+"<br>");        }else{            hanoi(n-1,src,dst,aux);            document.write(src+"→"+dst+"<br>");            hanoi(n-1,aux,src,dst);        }    }    hanoi(10,"A","B","C");</script>

原创粉丝点击