gpt4 book ai didi

JavaScript 递归函数未返回正确的输出

转载 作者:行者123 更新时间:2023-11-28 13:41:56 25 4
gpt4 key购买 nike

我有以下递归函数,用于检查 output 数组的长度是否为 100。如果长度小于 100,则递归调用该函数,参数变量 n加 1 如下:

var eratosthenes = function(n) {
// Eratosthenes algorithm to find all primes under n
var array = new Array(), upperLimit = Math.sqrt(n), output = new Array();

// Make an array from 2 to (n - 1)
for (var i = 0; i < n; i++) {
array.push(true);
}

// Remove multiples of primes starting from 2, 3, 5,...
for (var i = 2; i <= upperLimit; i++) {
if (array[i]) {
for (var j = i * i; j < n; j += i) {
array[j] = false;
}
}
}

// All array[i] set to true are primes
for (var i = 2; i < n; i++) {
if(array[i]) {
output.push(i);
}
}
if (output.length < 100){
eratosthenes(n+1);
} else {
return output;
}
};

计算出正确长度的数组后,我将使用以下函数格式化输出数组:

var fmt = function(arr){
return arr.join();
}

但是,当我按如下方式调用eratosthenes函数时:eratosthenes(100),返回的数组会导致fmt函数出现异常。但是,如果按如下方式调用eratosthenes函数:eratosthenes(545),其中output数组的长度= 100,则可以将该数组传递给fmt 功能没有问题。有没有办法用递归来解决这个问题?

最佳答案

您需要返回函数调用的结果:

return eratosthenes(n+1);

关于JavaScript 递归函数未返回正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17317002/

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