面试题

本文以收集一些网上的前端函数面试题为主, 后续会持续更新(说明一下 后续代码中 ,我就尽量不写分号了??)

  1. 这是一道大题,现拆分成了4个小项;需要答题者用递归算法(限15行内代码实现;限时10分钟内完成)

    1. 创建一个长度为5的空数组。
    2. 生成一个(2~32)之间随机整数 rand。
    3. 把随机数 rand 插入到 数组 arr 内, 如果数组中存在相同的与rand 相同的数字。则重现生成随机数 rand 并插入(不能使用 for/while 等循环)。
    4. 最终输入一个长度为 5, 且内容不重复的数字 arr。

    解题:

    let arr = new Array(5) // 小问1
    
    let random = (min, max) => Math.round( Math.random() * (max-min) + min ) // 小问2:这里没有按照 区间 [2~32] 写死,而是写成了一个纯方法, 由使用者自行传参
    
    function create(arr, min, max, i) {
      if(i > max - min ) return arr
      let nub = random(min, max)
      if(!arr.includes(nub)) {
        arr[i] = nub
        create(arr, min, max, i+1)
      }  else {
        create(arr, min, max, i)
      }
    }
    create(arr, 2, 32, 0) // 小问3 
    arr = arr.slice(0, 5) // 小问4 
    
    console.log(arr) // 输入结果验证, 全部代码实现 14行 

欢迎大家评论 交流不同解题思路 ??

转载于:https://www.cnblogs.com/vant850/p/11428565.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值