gpt4 book ai didi

JavaScript 递归?

转载 作者:行者123 更新时间:2023-11-30 16:03:59 28 4
gpt4 key购买 nike

我正在练习递归。从概念上讲,我理解这应该如何工作(见下文),但我的代码不起作用。

请告诉我我做错了什么。并请解释您的代码的每个步骤及其工作原理。清晰的解释比只给我有效的代码要好十倍。

  /*
buildList(0, 5) == buildList(0, 5 - 1) // [0]
buildList(0, 4) == buildList(0, 4 - 1) // [0,0]
buildList(0, 3) == buildList(0, 3 - 1) // [0,0,0]
buildList(0, 2) == buildList(0, 2 - 1) // [0,0,0,0]
buildList(0, 1) == buildList(0, 1 - 1) // [0,0,0,0,0]
*/

var buildList = function(value, length) {
var result = [];
if (length === 0) {
return result;
}

result.push(value);

return buildList(result.push(value), length - 1);

};


buildList(0, 5);

我了解递归在概念层面上的工作原理。

最佳答案

你的方法行不通,因为基本情况返回一个新的空数组,而其他情况返回递归的结果。

相反,你应该先递归然后推送

var buildList = function(value, length) {
if (length <= 0) return [];
var recur = buildList(value, length-1);
recur.push(value);
return recur;
};

或者,在基本情况下,您可以避免创建新数组

var buildList = function(value, length, array=[]) {
if (length <= 0) return array;
array.push(value);
return buildList(value, length-1, array);
};

关于JavaScript 递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37306467/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com