javascript - JS递归中的增量问题
问题描述
在FCC练习中,我使用了这个糟糕的代码:
function rangeOfNumbers(startNum, endNum) {
if (endNum < startNum) {
return [];
} else {
let recurs = rangeOfNumbers(++startNum, endNum)
recurs.unshift(startNum - 1);
return recurs;
}
};
真正糟糕的代码分开,引起我注意的是++startNum有效,而startNum++是InternalError: too much recursion。看了一些其他的帖子和YT视频,还是没看懂。
这是正确的代码:
function rangeOfNumbers(startNum, endNum) {
if (endNum - startNum === 0) {
return [startNum];
} else {
var numbers = rangeOfNumbers(startNum, endNum - 1);
numbers.push(endNum);
return numbers;
}
}
甚至更好:
function rangeOfNumbers(startNum, endNum) {
return startNum === endNum
? [startNum]
: [...rangeOfNumbers(startNum, endNum - 1), endNum ];
}
解决方案
推荐阅读
- spring - 在 Web 服务调用中添加带有请求有效负载的标头是否安全
- tensorflow - google.protobuf.text_format.ParseError:1:1:消息类型“object_detection.protos.TrainEvalPipelineConfig”没有名为“SSD”的字段
- javascript - 打字稿:如何键入 Ramda R.prop(key) T' 不能分配给类型为 '(s: {}) => {} 的参数
- pandas - pandas:获取数组中的所有 groupby 值
- python - SelectKBest 没有产生适当的结果
- c - 为什么只有在 Visual Studio 下运行可执行文件时 CreateFileA 才会失败?
- x86 - 已编译引导加载程序的大小错误
- css - css首字母转换?
- javascript - 将多维对象数组减少为单个对象数组
- ajax - 使用 f:ajax 标记时,Ajax 在 Internet Explorer 中无法正常工作