gpt4 book ai didi

javascript - 递归函数返回预期的字符串值,有时未定义?

转载 作者:行者123 更新时间:2023-12-03 04:41:25 24 4
gpt4 key购买 nike

该函数按预期随机工作,有时返回undefined。这就是我不明白的地方。

有人可以解释一下 javascript 在重复函数调用时的执行方式吗?在本例中,以递归模式为例。

main 函数有两个参数

第一个参数:一个整数,表示从第二个参数中获取的字符数。第二个参数:一个字符串。

整个代码

var getRandomIntInteger = function (min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}

function recursive(arr, string, limit) {

if (string.length >= limit) {
return string
}
else {
// get random integer within the range of the array ength
var randIndex = getRandomIntInteger(0, arr.length)
// concatenate that value sitting at that index
string += arr[randIndex]
// remove that value from the array
arr.splice(randIndex, 1)
// re-run
return recursive(arr, string, limit)
}

}

var main = function(k, i) {
let inputArray = Array.from(i)
console.log('k=',k, 'inputArray length = ', inputArray.length)


if (k >= i.length) {
return 'sameple size must not exceed '
}
let s = ""
var res = recursive(inputArray, s, k)
console.log('result = ', res)
return res

}

// run the function
main(4, "ABCDEFGHI")

此函数调用有时会返回 4 个随机字符,有时会返回未定义,即使使用相同的参数调用该函数也是如此。

最佳答案

根据您定义随机函数的方式,您应该更改此调用:

 var randIndex = getRandomIntInteger(0, arr.length)

对此:

var randIndex = getRandomIntInteger(0, arr.length - 1)

...因为第二个参数是可以由 getRandomIntInteger 生成的数字,但 arr[arr.length] 始终是 undefined >.

关于javascript - 递归函数返回预期的字符串值,有时未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43073645/

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