Javascript:具有递归函数的Math.Random有时返回undefined。为什么?

时间:2019-08-08 23:20:55

标签: javascript jquery html

我使用math.random和math.floor创建了一个随机数生成器,但还使该函数递归生成了唯一的数字。

基本上,它会生成一个随机数,检查该数字是否在数组内,如果不是,则将该数字插入数组,然后返回该数字。

如果数字在数组内,它将再次调用该函数。

当前,在我的代码中,我运行了3次该函数。第一个函数(因为在空数组中还没有数字)总是返回某些内容,但是偶尔在第二次/第三次调用该函数时,它会返回未定义的值。

只需删除递归,它就可以正常工作。

var myArray = [];

randomWholeNumber();
randomWholeNumber();
randomWholeNumber();



function randomWholeNumber() {
    var randomNumberBetween1and12 = (Math.floor(Math.random() * 12)) + 1;

    if (myArray.includes(randomNumberBetween1and12)) {
        randomWholeNumber();
    };

    if (!(myArray.includes(randomNumberBetween1and12))) {

        myArray.push(randomNumberBetween1and12);
                console.log(randomNumberBetween1and12);
        return randomNumberBetween1and12;
    };

}

我希望输出始终是一个数字,但是在调用该函数的3次中,有1次返回未定义。它也只会返回一次undefined!

即:

输出1:始终为数字,从未定义。

输出2:有时未定义,但是如果输出3未定义,则始终为数字

输出3:有时未定义,但是如果输出2未定义,则该值始终为数字

0 个答案:

没有答案