在 JavaScript 中,递归函数的返回值问题可以通过以下几种方法解决:
- 使用累加器变量:定义一个变量来累加递归函数的结果,并在每次递归调用中更新它。最后,返回累加器变量作为最终结果。
例子:
function sum(n, accumulator = 0) { if (n === 0) { return accumulator; } return sum(n - 1, accumulator + n); } console.log(sum(5)); // 输出 15
- 将递归函数的结果作为参数传递给下一个递归调用:在递归调用中,将递归函数的结果作为参数传递给下一个递归调用,并在边界条件中返回最终结果。
例子:
function sum(n) { if (n === 0) { return 0; } return n + sum(n - 1); } console.log(sum(5)); // 输出 15
- 使用全局变量:将递归函数的结果存储在一个全局变量中,并在递归调用中更新它。最后,返回全局变量作为最终结果。
例子:
let result = 0; function sum(n) { if (n === 0) { return; } result += n; sum(n - 1); } sum(5); console.log(result); // 输出 15
使用累加器变量或将递归函数的结果作为参数传递给下一个递归调用是更好的做法,因为它们避免了使用全局变量,使代码更清晰和可维护。