该函数按预期随机工作,有时返回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/