递归:
1:在函数内部调用自己
2:必须有一个明确的条件判断递归的结束,就是递归的出口
以下是一些简单的小例子:(阶乘,斐波那契数列)
(这里可以用到一个小的知识点,arguments)
eg://首先,要先找出阶乘或者斐波那契数列的规律,如何再结束条件
//阶乘的规律:以5为例,5!=5*4*3*2*1
普通的写法
function fun(n){
var num=1;
for(var i=1;i<=n;i++){
num*=i
}
}
递归:
function fun(){
if(n==1||n==0){ //一直乘到1,所以当n-1=0或者n0的时候就输出1
return 1;
}
return n*arguments.callee(n-1) //arguments是一个类数组,有length属性,还有callee,arguments.callee
}
同理,斐波那契数列也可以这样 //1 1 2 3 5 8 13 21 34
<script>
function fun(n){
if(n==1||n==2){ //当n-2=0或者n-1=0时,输出1,因为是从1开始的,第一个数和第二个数相加得到第三个数,第二个数和第三个数相加得到第四个数
return 1;
}
return fun(n-1)+fun(n-2)
}
console.log(fun(9))