首页 > 编程语言 > 详细

javascript 算法 ---递归

时间:2020-01-17 17:31:50      阅读:64      评论:0      收藏:0      [点我收藏+]

“要理解递归,首先要理解递归。” ——佚名

递归函数是在函数内部能够直接或间接调用自身的方法或函数

假设一个函数一直调用自己结果是什么?单就上述情况而言,它会一直执 行下去。因此,每个递归函数都必须有基线条件,即一个不再递归调用的条件(停止点),以防 止无限递归。 

function A(X) {   
  const recursionAnswer = confirm(‘Do you understand recursion?‘);
if (recursionAnswer === true) {
    //基线条件 ,停止点
   return true;
 }
  //递归调用
  A(recursionAnswer);
}

作为递归的第一个例子,我们来看看如何计算一个数的阶乘。数 n的阶乘,定义为 n!,表示 从 1到 n的整数的乘积。
5的阶乘表示为 5!,和 5 × 4 × 3 × 2 × 1相等,结果是 120。(注意一个概念定义 0!= 1,不是等于 0)

 function factorial(x){
    //基线
    if(x == 0 || x==1){
       return 1;  
    }
    //递归调用
    
    return    x*factorial(x-1);

}

斐波那契数列

 0、1、1、2、3、5、8、13、21、 34等数组成的序列。数 2由 1 + 1得到,数 3由 1 + 2得到,数 5由 2 + 3得到,以此类推。斐波 那契数列的定义如下。 

技术分享图片

 

 

//迭代的方法

function fibonacciIterative(n) {  
       if (n < 1) return 0;
       if (n <= 2) return 1; 
       let fibNMinus2 = 0;  
       let fibNMinus1 = 1;  
       let fibN = n;  
       for (let i = 2; i <= n; i++) { 
             // n >= 2 
            fibN = fibNMinus1 + fibNMinus2; 
            // f(n-1) + f(n-2)   
            fibNMinus2 = fibNMinus1;  
            fibNMinus1 = fibN;  
       }   
  return fibN; 
} 
                       

//递归的方法

function fibona(n){
    if(n <= 2)
    {
        return 1;
    }
    if(n < 1)
    {
        return 0;
    }
    reurn fibona(n-1)+fibona(n-2);
}

javascript 算法 ---递归

原文:https://www.cnblogs.com/elexmiumiu/p/12206512.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!