gpt4 book ai didi

javascript - 为什么此递归分区算法返回一个空数组?

转载 作者:行者123 更新时间:2023-12-03 07:20:15 25 4
gpt4 key购买 nike

这是我要解决的更大算法问题的一部分。
我正在尝试创建所有小于num的数字数组。
这是我的代码:

function sum(num, arr = []) {
if (num == 0) {
return arr;
}

arr.push(num);

return sum(num - 1);
}

console.log(sum(10));

我尝试将 arr声明为变量和参数。我看不到为什么它返回一个空数组。
如何修复数组,使其不返回空数组?

您是否有兴趣的更广泛的问题是:
在数论和组合学中,正整数n的分区(也称为整数分区)是将n表示为正整数之和的一种方式。两个仅在求和顺序上不同的和被视为同一分区。如果顺序很重要,那么总和就是一个组合。例如,可以通过五种不同的方式对4进行分区:
4
3 + 1
2 + 2
2 + 1 + 1
1 + 1 + 1 + 1

最佳答案

第一个代码段的问题是您没有将arr传递给sum。如果这样做,则得到数组:

function sum(num, arr = []) {
if (num == 0) {
return arr;
}

arr.push(num);
return sum(num - 1, arr);
// ^^^−−−−−−−−−−−−−−−−−−−−−−−−
}


console.log(sum(10));

关于javascript - 为什么此递归分区算法返回一个空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62531551/

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