当前位置:首页 > JavaScript

js递归实现求和

2026-01-30 22:45:36JavaScript

递归求和的基本原理

递归是一种通过函数调用自身来解决问题的方法。在求和场景中,递归通过不断将问题分解为更小的子问题(如数组前n-1项的和加上第n项),直到达到基线条件(如空数组或单元素数组)终止递归。

简单数组求和实现

以下代码展示如何用递归计算数组所有元素的和:

js递归实现求和

function sum(arr) {
  if (arr.length === 0) return 0; // 基线条件
  return arr[0] + sum(arr.slice(1)); // 递归调用
}

当输入[1,2,3]时,执行过程为:

  1. 1 + sum([2,3])
  2. 1 + (2 + sum([3]))
  3. 1 + (2 + (3 + sum([])))
  4. 1 + (2 + (3 + 0)) = 6

带索引参数的优化版本

为避免频繁创建新数组,可通过传递索引参数优化性能:

js递归实现求和

function sum(arr, index = 0) {
  if (index >= arr.length) return 0;
  return arr[index] + sum(arr, index + 1);
}

尾递归优化实现

ES6支持的尾递归优化可避免调用栈溢出:

function sum(arr, accumulator = 0) {
  if (arr.length === 0) return accumulator;
  return sum(arr.slice(1), accumulator + arr[0]);
}

多维数组求和扩展

处理嵌套数组时需增加类型判断:

function deepSum(arr) {
  return arr.reduce((acc, val) => 
    acc + (Array.isArray(val) ? deepSum(val) : val), 0);
}

注意事项

  • 递归深度过大可能导致堆栈溢出,可用尾递归或迭代替代
  • 对于大型数据集,循环通常比递归性能更好
  • 基线条件必须能够最终被满足,否则会导致无限递归

标签: 递归js
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…