一、概念:函数中调用函数自己,但是一定要有结束的条件
<script>
var i=0;
function f1(){
i++;
if(i<5){
f1();
}
console.log("哈哈");
}
f1();//输出5次哈哈
</script>
二、案例
<!-- 递归实现:求n个数字的和 -->
<script>
function getSum(n){
if(n==1){
return 1;
}
return n+getSum(n-1);
}
console.log(getSum(5));//15
//执行过程:
//1.代码执行getSum(5)---->进入函数,此时执行的n=5.执行5+getSum(4),此时代码等待,先不进行计算
//2.执行getSum(4)----->进入函数,执行n=4,执行4+getSum(3),此时代码等待,先不进行计算
//3.执行getSum(3)------>进入函数,执行n=3,执行3+getSum(2),此时代码等待,先不进行计算
//4.执行getSum(2)------>进入函数,执行n=2,执行2+getSum(1),此时代码等待,先不进行计算
//5.执行getSum(1)------>进入函数,执行n=1,返回结果是1,所以getSum(1)=1;
//6.往回走:2+getSum(1)------>2+1;
//7.往回走:3+getSum(2)------>3+2+1;
//8.往回走:4+getSum(3)------>4+3+2+1;
//9.往回走:5+getSum(4)------>5+4+3+2+1--->得出结果等于15
//10.结束输出结果15
</script>
<!-- 递归案例:求一个数字各个位数上的和 -->
<script>
function getEverySum(n){
if(n<10){
return n;
}
return n%10+getEverySum(parseInt(n/10));
}
console.log(getEverySum(1265));//14
</script>
<!-- 递归案例:求斐波那契数列 -->
<script>
function getFib(n){
if(n==1||n==2){
return 1;
}
return getFib(n-1)+getFib(n-2);
}
console.log(getFib(10));//55
</script>
三、应用:(后面文章介绍)