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