【JavaScript 】用递归函数计算1加到100

递归函数是指在函数的定义中调用函数自身的函数。它通常用来解决可以分解为更小、相似子问题的问题,例如计算阶乘、斐波那契数列、树的遍历等。

1、递归函数计算1加到100示例:


function sumToN(current, target, accumulator = 0) {
  if (current > target) {
    return accumulator; // 当前数字超过目标数字时,返回累积和
  } else {
    return sumToN(current + 1, target, accumulator + current); // 递归调用
  }
}

// 调用函数,计算从1加到100的和
const totalSum = sumToN(1, 100);
console.log(totalSum); // 输出结果应该是 5050

方法传参分别是:

  • current 是当前处理的数字。
  • target 是我们想要加到的最终数字,在这里是100。
  • accumulator 是累加器,用来保存从1加到当前数字的总和。初始值设为0。

详解:当 current 超过 target 时,递归停止,函数返回累积的和。在每次递归调用中,我们将 current 加到 accumulator 上,并将 current 增加1,然后再次调用 sumToN 函数。

备注:这个递归函数可以计算任意正整数的累加和,只需将 target 参数设置为所需的数字即可。但是,由于JavaScript的调用栈大小限制,如果 target 设置得非常大,可能会导致栈溢出错误。在实际应用中,对于大范围的累加,迭代方法可能更加安全和高效。

 2、一个递归函数必须有两个主要部分:

  • 基本情况(Base Case): 这是递归调用结束的条件。没有基本情况或基本情况设计不当,递归将无限进行,导致栈溢出错误。
  • 递归情况(Recursive Case): 这里函数调用自身来解决问题的一部分,逐步逼近基本情况。

下面是一个计算阶乘的递归函数示例:

function factorial(n) {
    if (n === 0 || n === 1) { // 基本情况
        return 1;
    } else { // 递归情况
        return n * factorial(n - 1);
    }
}

console.log(factorial(5)); // 输出 120

上面例子中,factorial(5) 会调用 factorial(4),factorial(4) 调用 factorial(3),依此类推,直到 factorial(1) 或 factorial(0),这时返回值开始回溯并计算结果。 

备注:递归函数可能导致大量的函数调用和栈空间使用,对于非常大的输入,可能会导致栈溢出。在实际应用中,需要考虑递归的深度,并在可能的情况下使用迭代或其他优化方法来避免这种问题。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值