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循环来说较长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值