所以,我已经理解了JavaScript 中递归的概念(有一个函数可以循环自身,直到达到基本条件,此时它停止并返回最终结果),但我有一点当我将其应用到尝试应用它来创建数组的实际语法时,我感到头疼。
\n让我们使用freeCodeCamp 的倒计时练习作为示例。这是正确的结果:
\nfunction countdown(n) {\n if (n < 1) {\n return [];\n } else {\n const arr = countdown(n - 1);\n arr.unshift(n);\n return arr;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n这里的想法显然是有一个函数从给定的n倒数到 1。我理解这个想法,但我有几个问题:
\n1 -为什么将数组声明为常量并分配给递归调用?数组不应该更好地在外部声明为变量(因为它会更改值)\xe2\x80\x93 并且其当前位置不意味着每次发生递归时都会声明(并覆盖)它?
\n2 -我得到了当前值的不变,但为什么它是在递归调用之后声明的?难道它不应该放置在之前(上面一行)以便在函数循环本身之前取消移位值吗?
\n3 -同样,为什么 …