所谓递归,就是在函数内部又去调用自己
例如:求阶乘问题,在fact函数内部又去调用fact函数
function fact(n){
if(1==n){
return 1;
}
return n*fact(n-1);
}
alert(fact(5));
递归的算法如果按照常规思路去理解是非常复杂的,函数调用一层一层嵌套调用,然后又一层一层返回。不妨慌思路去理解递归
递归实际上就是将规模为你的问题降阶为n-1的问题进行求解。也就是去找n和n-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>