zoukankan      html  css  js  c++  java
  • 递归算法实现,数组长度为 5 且元素的随机数在 2-32 间不重复的值

    拆分问题:

    数组长度为 5;
    生成 2-32 之间的随机数;
    向数组中插入数值时,如果已存在则重新生成;
    采用递归的方式,而非循环语句实现。
    function getRandom(max, min) {
    max = max + 1;
    min = min || 0;
    return Math.floor(Math.random() * (max - min)) + min;
    }

    function insertArr(arr, length, min, max) {
    if (arr.length < length) {
    var value = getRandom(max, min);
    console.log('value=' + value);
    if (!~arr.indexOf(value)) {
    arr.push(value);
    }
    insertArr(arr, length, min, max);
    }
    }

    var result = [];
    insertArr(result, 5, 32, 2);

    console.log(result);

    一、创建一个长度为5的空数组

    var arr = new Array(5);
    二、生成一个2-32之间的随机整数

    如果是细致的考虑,就需要包括[2,32],(2,32),(2,32],[2,32)四种情况了,请自行解决,我们采用[2, 32]

    var rand = Math.floor(Math.random()*(32-2+1) + 2)
    三、将生成的随机数arr数组内,且arr内不可存在相同数字

    function getNewArr(index,arr){
    if(index >= 5){
    return false
    }
    if(!arr.includes(rand)){
    arr[index++] = rand
    getNewArr(index, arr)
    }else{
    getNewArr(index, arr)
    }
    }
    getNewArr(0, arr)
    console.log(arr)
    用object方式替换includes的判断

    const getNewArr = function(len){
    let arr = new Array(len),index = 0,obj = {};
    let rand = Math.floor(Math.random()*(32-2+1)+2);
    const pushArr = function(num){
    if(index < num){
    if(obj[index]){
    pushArr(rand)
    }else{
    arr[index++] = num;
    obj[num] = true;
    pushArr(rand)
    }
    }
    }
    pushArr(rand)
    return arr
    }
    console.log(getNewArr(5))

  • 相关阅读:
    iOS testFlight的使用
    Java读书笔记
    Vim编辑器
    seleniumRC测试用例——登录
    自动化测试工具——selenium
    《Oracle从入门到精通》
    WEB服务器相关知识摘录
    oracle表空间与分区表
    Linux 常用命令
    Linux 常见问题
  • 原文地址:https://www.cnblogs.com/dillonmei/p/12578483.html
Copyright © 2011-2022 走看看