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