• javascript 递归调用


    递归调用简介:

      递归调用是一种特殊的嵌套调用,是某个函数调用自己或者是调用其他函数后再次调用自己的,只要函数之间互相调用能产生循环的则一定是递归调用,递归调用一种解决方案,一种是逻辑思想,将一个大工作分为逐渐减小的小工作。
      通俗的说,就是:自己调用自己,从后面往前推。

    递归调用包含:

    1. 终止条件 => 包裹在if之中的 return;
    2. 运算条件 => 算法; => 极简算法;;
    3. 返回结果 => return ;

    递归调用的典型例题:

      累加 : 1 + 2 + 3 + 4 + 5 + 6 ....

    var count = 0;
    function sum( num ){
    // 这个运算的起始值, 归到起始点;
    count ++; // 查看递归函数执行的次数;
    // 终止条件
    if( num === 1){
    return 1;
    }
    // 运算条件
    return sum( num - 1 ) + num;
    } 
    var res = sum(100);
    console.log( res );
    console.log(count);

      运算截图:

      这个例题就是函数实现了自我调用,从最后一个数字num开始,往前推进,直至num=0,程序结束。一遍遍执行 return sum( num - 1 ) + num,循环调用sum()这个函数,就是递归调用的典型。


    递归调用的又一典型例题:斐波那契数列

    其数列样式是 1 1 2 3 5 8 13 ..... 输入斐波那契的数列项数,计算当前项的具体数值;

    function fib( n ){
    // 终止条件 : 
    // 判定如果项为 1 或 2 , 返回 结果 1;
    if( n === 1 || n === 2){
    return 1;
    }
    // 运算规则 : 
    return fib( n - 1) + fib( n - 2 )
    }
    var res = fib(40);
    console.log(res);

    递归调用的注意点:

      在日常使用中,我们正常不使用递归调用,因为其消耗时间相较于for和while循环来说较长。

  • 相关阅读:
    使用contentProvider
    创建Sqlite数据库(一)
    AIDL实现进程间通信
    Messenger实现进程间通信(IPC)
    Serializable使用
    Parcelable使用(二)
    STAR法则
    Python系列-------基本语法
    前端随心记---------面试题集
    前端随心记---------惟客科技面试
  • 原文地址:https://www.cnblogs.com/xfz926/p/12391896.html
Copyright © 2020-2023  润新知