题目

[js] 第1天 用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值 · Issue #3 · haizlin/fe-interview

用递归算法实现数组长度为 5 且元素的随机数在 2-32 间不重复的值

实现

思路:

  • 生成一个随机数,检查是否在数组中
    • 若不存在,加入数组并递归
    • 若已存在,直接递归 注意:递归实现需要在函数运行时动态修改入参,并且返回一个递归调用

复杂度分析

  • 时间复杂度:,平均
  • 空间复杂度:
var generateUniqueRandomArr = function (leng, min, max, curArr = []) {
    if (curArr.length === length) return curArr
 
    let randomNum = Math.floor(Math.random() * (max - min + 1)) + min
 
    if (!curArr.includes(randomNum))
        return generateUniqueRandomArr(leng, min, max, […curArr, randomNum])
    else
        return generateUniqueRandomArr(leng, min, max, curArr)
}
let res = generateUniqueRandomArr(5, 2, 32)