JS的简单递归

2,217 阅读1分钟

递归函数

1.底层:自己调用自己

2.递归三步曲{
        ①.先找停止条件(一般为开头的第一项
        ②.找到每个结果与上一行的关系
        ③.写输出语句
}

3.举例

 //1.高度100米,每次落下弹起时,是原来高度的一半,第7次弹起时高度多少,使用递归实现
 //寻找关系:第一次,50,第二次,25,第三次,12.5·····
 //可得推论:每一个结果,都等于上一个结果*0.5
 function fu(n){
     if(n===0)return 100;//停止条件
     return 0.5*fu(n-1);//关系
 }
 var res =fu(7)//返回值
 console.log(res);
 //结果为:0.78125
 ​
 //2.斐波那契
 //1,1,2,3,5,8,13······
 //停止条件:n1=1,n2=1
 //寻找关系:1+1=2 ,1+2=3,2+3=5,3+5=8····
 //可得推论:每一个结果都等于前两项之和 f(n-1)+f(n-2)
 function fu(n){
     if(n===1||n===2){//停止条件
     return 1;
     }
     return f(n-1)+f(n-2);//关系
 }
 var res =fu(7)
 console.log(res);
 //结果为:13
 ​
 //3.阶乘
 //5!=1*2*3*4*5
 //4!=1*2*3*4
 //3!=1*2*3
 //2!=1*2
 //1!=1//停止条件
 //寻找关系:前一项的阶乘×于本身
  function fu(n){
         if (n === 1) {
             return 1;
         }
         return n * fu(n-1)
     }
     var res = fu(5)
     console.log(res);
 //结果为:120

递归的方法有很多,以上仅仅是我的个人理解,如果不好找到结束条件,那就自己定义一个,仅供参考,如有错误多谢指正!