给定一个数字的Javascript我想要所有可能的组合和元素数组

标签 javascript algorithm search combinations

在 javascript 代码中,我将元素的所有可能组合,它们的总和给出我想要的数字: 示例:

array = [2, 1, 2, 1]; 
number = 3; 
finalArray = [[2, 1], [2, 1], [1, 2], [2, 1]]

array = [5, 5, 4, 4, 2] 
number = 10 
finalArray = [[5, 5], [4, 4, 2]]

这是我的代码,但我只有第一个组合!我不知道为什么当我返回递归函数时,也返回 main 函数并且它不会继续使用另一个组合。 你能帮我吗?我关注这个Finding all possible combinations of numbers to reach a given sum

 $(document).ready(function() {

    var numero = 3;
    var array = [2, 1, 2, 1];
    var tmpArray = [];
    var finalArray = [];

    $("#button").click(function() {
        combinationTableCard(array, numero, tmpArray);
        console.log(finalArray);
    })

    function combinationTableCard(cardArray, number, partialArray) {

            var n;
            var s = sumArray(partialArray);
            if (s == number) {
                finalArray.push(partialArray);
            }
            if (s >= number) {
                return;
            }
            for (i=0; i<cardArray.length; i++) {
                    n = cardArray[i];
                    var remaining = copyArray(cardArray, i+1, cardArray.length-1);

                    partialArray.push(n);
                    combinationTableCard(remaining, number, partialArray);
            }
        }

    function sumArray(v) {
            var total = 0;      
            if (v.length == 0) {
                return total;
            } else {
                for (i=0; i<v.length; i++) {
                    total += v[i];
                }
                return total;
            }
        }

        function copyArray(v, i, j) {
            var newV = new Array();
            var k = 0;
            for(i; i <= j; i++) {
                newV[k] = v[i];
                k++;
            }
            return newV;
        }

    })

最佳答案

在这个函数中,问题是你没有将 i 声明为局部变量,所以它变成了全局变量。函数 combinationTableCard 和 sumArray 使用相同的变量 i。声明变种我;你会得到想要的结果。

关于给定一个数字的Javascript我想要所有可能的组合和元素数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28478009/

相关文章:

javascript - 循环不返回所有数据 JavaScript

java - 如何选择一条线

javascript - 为什么 2 ** (1 << 31) == 0?

rest - 如何设计 RESTful 搜索/过滤?

javascript - 如何使用 React.js Flux 架构和 McFly 中的操作处理 API 调用?

javascript - 根据网页中可用区域的动态拇指数量

javascript - JavaScript 函数是 "function"还是 "object"或两者?

javascript - 如何跟踪 BFS 图搜索 JavaScript 中的路径

c++ - 搜索字符串数组

search - 如何隐藏在 liferay 搜索容器中显示结果文本?