今天在做蓝桥杯模拟赛题目的时候看到了这个题目,特此做个记录,主要就是利用的递归还有判断语句就能实现
const getRandomNum = function (min, max, countNum) {
let arr = [];
// 在此处补全代码
function produceNum(){
let num=Math.floor((Math.random()*(max-min))+min)
if(arr.indexOf(num)==-1){ //判断不存在就push
arr.push(num)
}else{
produceNum() //存在了重新调用
};
if(arr.length<countNum){ //判断数组长度是否小于所需长度
produceNum();
}
}
produceNum()
return arr;
};
然后在看到了一个朋友的代码,觉得更加方便,也再次记录
function produceNum(){
let arr=[];
for(let i=0;i<arr.length;i++){
let num=Math.floor((Math.random()*(max-min))+min);
if(arr.indexOf(num)==-1){ //不存在推入
arr.push(num);
}else{
i--; //存在了使i-1增加一次循环次数
}
}
return arr;
}