本文以收集一些网上的前端函数面试题为主, 后续会持续更新(说明一下 后续代码中 ,我就尽量不写分号了??)
这是一道大题,现拆分成了4个小项;需要答题者用递归算法(限15行内代码实现;限时10分钟内完成)
- 创建一个长度为5的空数组。
- 生成一个(2~32)之间随机整数 rand。
- 把随机数 rand 插入到 数组 arr 内, 如果数组中存在相同的与rand 相同的数字。则重现生成随机数 rand 并插入(不能使用 for/while 等循环)。
- 最终输入一个长度为 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行
欢迎大家评论 交流不同解题思路 ??