JavaScript无限循环,而世代数用减号?

时间:2017-12-15 06:03:51

标签: javascript arrays math

我有用于制作数学问题的JavaScript代码(简单的数学问题)。一切都是随机的。 加上(+)一切正常。 e.x。

1 + 3

2 + 4

8 + 9

问题:

当检查minus参数的第一个数字是否大于第二个(1-2错误; 2-1代码执行)的函数时,会发生无限循环。我对解释有好处,希望在看到代码时能得到它。

输出结构为:

数字1-10(随机)加上

数字1-10(随机),减去

从1-100(随机)加上

的数字

数字1-10(随机),减去

<html>
    <p id='plus10'></p>
    <p id='minus10'></p>
    <p id='plus100'></p>
    <p id='minus100'></p>

    <script>
     arr2 = [];
     var lastArr2 = [];
    var num1,num2;   
//FIRST ARRAY 
    while(lastArr2.length<121){
        arr2.push('<br>'+Math.round(Math.random() * 10)+'+'+Math.round(Math.random() * 10)+'=');
    lastArr2=removeDuplicates(arr2);

    }

    document.getElementById('plus10').innerHTML=(lastArr2.join(' '));




    //SECOND ARRAY



    arr1 = [];
    var lastArr1 = [];

    while (lastArr1.length < 121) {
      arr1.push('<br>' + Math.round(Math.random() * 100) + '+' + Math.round(Math.random() * 100) + '=');
      lastArr1 = removeDuplicates(arr1);
    }

    document.getElementById('plus100').innerHTML = (lastArr1.join(' '));



    //THIRD ARRAY



    arr3 = [];
    var lastArr3 = [];

    while (lastArr3.length < 121) {
    gen();

    }



    function gen(){
    //minus function
    num1=Math.round(Math.random()*10);
    num2=Math.round(Math.random()*10);

    if(num1<num2){
    gen();
    }else{
    lastArr3 = removeDuplicates(arr3);
    arr1.push(num1+'-'+num2+'=');
    }

    }




    document.getElementById('minus10').innerHTML = (lastArr3.join(' '));











    function removeDuplicates(arr){
        let unique_array = []
        for(let i = 0;i < arr.length; i++){
            if(unique_array.indexOf(arr[i]) == -1){
                unique_array.push(arr[i])
            }
        }
        return unique_array
    }
    </script>
    </html>

修改

我错了

 arr1.push(num1+'-'+num2+'=');

应该是

arr3.push(num1+'-'+num2+'=');

但这并不能解决无限循环

2 个答案:

答案 0 :(得分:0)

我不确定你在这里要做什么,但是你的

while (lastArr3.length < 121) {
    gen();
}

while这里(对于第三个数组)对我来说绝对是一个无限循环。您应该对lastArr3 gen()内的lastArr3.length < 121进行一些更改,以使您的条件while无法满足,这最终会使您脱离Integer.valueOf("3");

答案 1 :(得分:0)

gen()函数中,arr1.push()应该是arr3.push(),否则循环条件永远不会改变,它将保持无限循环。