【发布时间】:2023-03-18 00:03:02
【问题描述】:
下面的简单函数接受一个数组和一个数字,并基本上输出该数组的长度 * 指定的数字。
function sum(arr, n) {
if (n <= 0) {
return 0;
} else {
return sum(arr, n - 1) + arr[n - 1];
}
}
如果我们调用以下代码:sum([2, 3, 4, 5], 3),我们正确地得到 9 作为最终输出值。
例如:
function sum(arr, n) {
if (n <= 0) {
return 0;
} else {
return sum(arr, n - 1) + arr[n - 1];
}
}
console.log(sum([2, 3, 4, 5], 3))
我不确定我是否理解这里发生了什么。这个最终值存储在哪里?我可以看到在函数中调用函数并在每个实例中使用递减值实际上是在替换 for 循环,但是如果没有额外的上下文,我希望输出要么总是返回 0,要么函数根本不起作用。
哪些隐藏的方面正在发挥作用,使这个返回期望值?
【问题讨论】:
-
是什么让 this 返回所需的值 是......
return声明 -
不要在这里等待很好的解释,而是去看一些关于递归的视频并尝试理解它,然后再看看你的例子。您可能需要一些时间才能掌握它,但最终您会明白的。
标签: javascript function recursion syntax