【发布时间】:2022-01-18 23:49:56
【问题描述】:
生成数组中前 n 个值的总和。
function sum(arr, n) {
if (n <= 0 ){
return 0;
} else {
return sum(arr, n-1) + arr[n-1];
}
}
你好,我有这个来自 freecodecamp 的简单递归函数。我理解递归的概念,但我似乎无法理解为什么它在这个确切的用例中有效。
我主要是在努力理解计数是如何增加和存储以产生最终总和的,以及为什么函数在到达断点后不返回 0 作为总和。
感谢任何解释,谢谢。
这也不是针对项目或任何类型的,只是为了更好地理解这个概念。
【问题讨论】:
-
"为什么函数在到达断点后不返回 0 作为总和。" - 什么断点?
-
“计数如何增加” - 计数没有增加,
n的值随着每个可重入步骤(也称为递归调用)而减少。 -
@Dai,当
n = 0时,函数命中第一个子句。可以将其描述为循环的中断。 -
欢迎您,格里芬。请参阅How to Ask 并拨打tour。您的问题有点宽泛,因为我们不是讨论论坛。如果可以,请修改以询问有关该代码的更具体的内容。
-
这可能是开始使用调试器的好机会。使用调试器,您可以在代码执行时逐行单步执行代码,单步执行此函数的每个递归调用,并观察其行为方式和值如何变化。当你这样做时,你能确定一个不符合你期望的特定操作吗?那是什么手术?使用了哪些值?结果如何?预期的结果是什么?为什么?
标签: javascript recursion