递归的含义:通俗易懂就是在函数内部自己调用自己
无限调用自身这个函数,每次调用总会改动-个关键变量,直到这个关键变量达到边界的时候,不再调用。
递归的三要素
1、明确这个函数你想要做什么(功能是什么)
2、寻找递归的结束条件(确定终止条件)。递归结束,之后直接把结果返回。这个时候你要根据你想传的参数的值,来知道函数的结果是啥
3、找出函数的等价关系式(确定递归函数的参数和返回值)
例题1:求阶乘(n*(n-1)*(n-2)*...*3*2*1)
function fun(a){
if(a<=1){
return 1;
}
return a*fun(a-1);
}
console.log(fun(4));
例题2:求斐波那契数列
斐波那契数列的是这样一个数列:1、1、2、3、5、8、13、21、34…,即第一项 f(1) = 1,第二项 f(2) = 1…,第 n 项目为 f(n) = f(n-1) + f(n-2)。求第 n 项的值是多少。
function f(n){
if(n<=2){
return 1;
}
return f(n-1)+f(n-2);
}
console.log(f(7));