递归
递归先执行的,必定是最后执行完毕
实现递归必须满足两点条件:
- 找到规律
- 找到出口
案例1
//求n的阶乘
//1.找规律
//2.找出口
// n!= n *(n - 1) 规律
// 阶乘的已知数为 1 ,所以 1 就是出口
function mul(n){
if(n === 1 || n === 0 ){ //出口
return 1;
}
return n * mul( n - 1); //规律公式
}
document.write(mul(5));
解释—
只知道规律而没有出口的情况下
mul (5) ==> 5 * mul (4)
mul (4) ==> 4 * mul (3)
mul (3) ==> 3 * mul (2)
mul (2) ==> 2 * mul (1)
...(一直无限循环)
知道规律,知道出口(会直接在1就结束)
mul (5) ==> 5 * mul 24
mul (4) ==> 4 * mul 6
mul (3) ==> 3 * mul 2
mul (2) ==> 2 * mul 1
案例2
//斐波那契数列
//规律
//fb(n) == fb(n - 1)+fb(n - 2)
//出口 1 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)
*/
----------
1 1 2 3 5 8 13 21
a b c
a b c
a b c
斐波那契数列公式:结果永远是 (n - 1)+(n -2);
本文深入浅出地介绍了递归算法的基本概念,通过两个经典案例——阶乘和斐波那契数列来阐述如何找到递归的规律及设定出口条件,帮助读者理解递归算法的设计思想。
2904

被折叠的 条评论
为什么被折叠?



