JavaScript 随机产生不重复的数字思路(递归法) 作者: Chuwen 时间: 2019-10-22 分类: JavaScript # 代码 ```javascript /** * 产生指定长度 0~11的数字,且不重复数字的数组,使用了递归方法 * @author chuwen * @link https://NowTime.cc * @param length 指定生成数组的长度,默认为5 * @param arr 默认空白数组,不需要填写 * @returns {Array} 输出数组 */ function random_num(length=5, arr=[]) { let random = Math.floor(Math.random()*11)+1, repeat = false; random = random > 9 ? random.toString() : '0'+random;//将数字转化成字符串。如果小于9,给数字前面补一个零 if(arr.length > length-1) return arr;//达到了指定数组长度,直接输出数组 for(let item in arr){ if(arr[item] === random) return random_num(length, arr);//如果数组中存在与本次随机产生的随机数有相同的,就递归调用 } arr.push(random);//将产生的随机数,追加进 arr return random_num(length, arr);//然后进行递归调用 } ``` # 运行结果 ``` console.log(random_num(5));//运行结果如下 ["02", "04", "06", "10", "01"] console.log(random_num(4));//运行结果如下 ["03", "10", "08", "06"] ``` 标签: JavaScript