【发布时间】:2020-05-14 18:51:58
【问题描述】:
我最近迈出了学习 JavaScript 的第一步。我正在关注 FreeCodeCamp 'JavaScript Algorithms and Data Structures Certification' 轨道。
我真的很难理解递归是如何工作的,尤其是它如何与堆栈交互。我了解一些基本示例,但完全停留在这个示例上!
function countup(n) {
if (n < 1) {
return [];
} else {
const countArray = countup(n - 1);
countArray.push(n);
return countArray;
}
}
console.log(countup(5)); // [ 1, 2, 3, 4, 5 ]
我知道count(n-1) 再次调用该函数,参数 1 减去 N 的原始值,但不明白它是如何实际工作的。为什么分配给const countArray?为什么最后是return countArray。
谢谢!!
【问题讨论】:
-
也许用整个代码替换对
countup的每次调用会有所帮助 -
@acdcjunior:您应该将其作为答案,这是将其可视化的好方法。
-
所以我想我终于明白是怎么回事了……我不明白在基础案例被击中后发生了什么。当 n = 0 时,我的想法是否正确,该函数返回一个空数组。然后,这允许先前的调用完成执行然后返回。然后前一个可以返回等等等等。这是正确的想法吗?感谢您的帮助!
标签: javascript recursion