給定數組裏選出隨機位數的和爲固定值sum(從n個數字中選取多個相加,結果爲m )

直接代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        input{
            margin:20px;
            height: 35px;
            display: inline-block;
            width: 400px;
            font-size: 20px;
        }
        button{
            height: 35px;
            display: inline-block;
            width: 100px;
        }
    </style>
</head>
<body>
    <div style="text-align: center">
        總數:<input type="number" id='k'>
        <br>
        數組:<input type="text" id="arrays" style="margin-bottom:0;" placeholder="逗號隔開">
        <p style="margin-top:0;">例子:1,2,3,12,13</p>
        <br>
        <button onclick="fn()">開始</button>
        <div id="result">

        </div>
    </div>
    
</body>
<script>
    var k = document.getElementById('k');
    var arrays = document.getElementById('arrays');
    var result = document.getElementById('result');
    function printNum(n, m, num, arr) {

        if (n == -1) {
            return;
        }
        if (m === 0) {
            console.log(num);
            var div = document.createElement('div');
            div.innerHTML = num;
            div.style.color = 'green';
            result.appendChild(div)
        }

        num.push(arr[n-1]);
        printNum(n - 1, (m - arr[n-1]), num,arr);
        num.pop();
        printNum(n - 1, m, num,arr);

    }
    function fn(){
        result.innerHTML='';
        var arr = arrays.value.split(/,|,/);
        arr.forEach((element,index) => {
            arr[index] = parseFloat(element)
        });
        if(parseFloat(k.value) == ''){
            alert('輸入總數')
        }else if(arr.lengt<2){
            alert('數組至少兩位吧')
        }else{
            printNum(arr.length, parseFloat(k.value), [], arr);
        }
    }

</script>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章