该函数按预期随机工作,有时会返回undefined
。
这是我不明白的。
有人可以解释javascript在重复函数调用时的执行情况,例如,在递归模式中。
main
函数有两个参数
First Arg:一个整数,表示从第二个参数中获取的字符数。 第二个Arg:一个字符串。
整个代码
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个随机字符,有时会返回undefined,即使使用相同的参数调用该函数也是如此。
答案 0 :(得分:1)
按照您定义随机函数的方式,您应该更改此调用:
var randIndex = getRandomIntInteger(0, arr.length)
到此:
var randIndex = getRandomIntInteger(0, arr.length - 1)
...因为第二个参数是getRandomIntInteger
可以产生的数字,但arr[arr.length]
始终是undefined
。