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);

  运算截图:
javascript 递归调用
  这个例题就是函数实现了自我调用,从最后一个数字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循环来说较长。

 

上一篇:10.1 斐波那契数列(剑指 Offer 题解Java版)


下一篇:嵌入式C语言优化技巧