写递归一般就是2步
- 找规律
- 找出口
案例1 求n的阶层
//n! = n * (n - 1)
function mul(n) {
//n的阶层
// var num = 1
// for(var i = 1;i<=n;i++){
// num *= i;
// }一般写法
if (n == 1 || n == 0) {
//出口
return 1;
}
return n * mul(n - 1); //规律
}
mul(5);
//mul(5) ==> 5 * mul(4);推理步骤
//mul(4) ==> 4 * mul(3);
//mul(3) ==> 3 * mul(2);
//mul(2) ==> 2 * mul(1);
案例2 求斐波那契数列
//fb(n) = fb(n-1) + fb(n-2)
function fb(n) {
if (n == 1 || n == 2) {//出口
return 1;
}
return fb(n - 1) + fb(n - 2);//规律
}
//fb(5) == > fb(4) + fb(3);推理
//fb(4) == > fb(3) + fb(2); fb(3) == > fb(2) + fb(1);
//fb(3) == > fb(2) + fb(1);