【发布时间】:2020-10-03 08:39:27
【问题描述】:
我正在解决 CodeWars kata。
这是我的代码:
function partsSums(arr) {
let bigSum = [];
if (arr.length == 0) {
bigSum.push(0);
}
while (arr.length >= 1) {
let sum = arr.reduce((acc, ele) => acc + ele);
bigSum.push(sum);
partsSums(arr.shift());
}
return bigSum;
}
正确答案应该是:[20, 20, 19, 16, 10, 0]
我的函数返回:[ 20, 20, 19, 16, 10 ]
请指出我的错误或误解。谢谢!
【问题讨论】:
-
只删除while条件中的"=" -> arr.length > 1
-
您的递归调用绝对没有任何作用。它得到一个数字而不是一个数组,并且返回被丢弃。问题的“递归”部分有点人为地粘在上面,没有做任何事情。无法直接评论它的唯一原因是因为参数计算将数组缩短了一个。
-
请包括任务描述以及您为其列出输出的示例输入。链接可能会过期。
标签: javascript arrays algorithm function recursion