我有以下功能
function randomNum(max, used){
newNum = Math.floor(Math.random() * max + 1);
if($.inArray(newNum, used) === -1){
console.log(newNum + " is not in array");
return newNum;
}else{
return randomNum(max,used);
}
}
基本上,我正在创建一个介于 1 - 10 之间的随机数,并通过将其添加到数组并对照它检查新创建的数字来检查该数字是否已创建。我通过将它添加到变量来调用它..
UPDATED:
for(var i=0;i < 10;i++){
randNum = randomNum(10, usedNums);
usedNums.push(randNum);
//do something with ranNum
}
这有效,但在 Chrome 中我收到以下错误:
Uncaught RangeError: Maximum call stack size exceeded
我猜这是因为我在内部调用函数太多次了。这意味着我的代码不好。
有人可以帮我分析一下逻辑吗?确保我的数字不重复的最佳方法是什么?