递归

递归:

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))

原文地址:https://www.cnblogs.com/3542446186qq/p/10139787.html