Javascript 创建排列以达到目标编号

Javascript 创建排列以达到目标编号,javascript,math,recursion,permutation,Javascript,Math,Recursion,Permutation,我有数组[1,2,4],我想做4;我希望它返回[4],而不是[1,1,1,1],[1,1,2],[2,2],[4],我以前是这样做的,但在小型服务器上运行时,内存开始耗尽。我必须让整个函数运行,这样我才能.reverse(),因为数组中的最后一次只对我有用 如果我们从货币的角度来考虑这一点,让我们以[0.5,0.5,1,0.2]为例;如果我想要1美元,我想要的是[1],而不是[0.5,0.5],因为你总是想要每件商品的最大价值,对吗 我目前正在使用这个: 函数getCombinations(数

我有数组[1,2,4],我想做4;我希望它返回[4],而不是[1,1,1,1],[1,1,2],[2,2],[4],我以前是这样做的,但在小型服务器上运行时,内存开始耗尽。我必须让整个函数运行,这样我才能.reverse(),因为数组中的最后一次只对我有用

如果我们从货币的角度来考虑这一点,让我们以[0.5,0.5,1,0.2]为例;如果我想要1美元,我想要的是[1],而不是[0.5,0.5],因为你总是想要每件商品的最大价值,对吗

我目前正在使用这个:

函数getCombinations(数组、和){ 功能叉(i,t){ var s=t.reduce(函数(a,b){返回a+b;},0); 如果(总和=s){ 结果:推(t); 返回; } if(s>sum | | i==array.length){ 返回; } 叉(i+1,t.concat([array[i]]); 叉(i+1,t); } var结果=[]; fork(0,[]); 返回结果; } log(getcompositions([1,2,4],4))
。作为控制台包装{max height:100%!important;top:0;}
请您明确定义您的要求。可能的重复如何是重复的?它远没有我想要的那么接近……更详细地说,我想要一个函数,它接受一个数组和一个目标,并使用数组中的数字试图到达目标,如果它找到一个解决方案,它将立即返回它,而不返回其他任何东西。但是,我希望结果尽可能高,因此得到14,[10,4]比[7,7]好。你明白吗?请你能清楚地定义你的要求。可能的重复怎么是重复的?它远没有我想要的那么接近……更详细地说,我想要一个函数,它接受一个数组和一个目标,并使用数组中的数字试图到达目标,如果它找到一个解决方案,它将立即返回它,而不返回其他任何东西。但是,我希望结果尽可能高,因此得到14,[10,4]比[7,7]好。你明白吗?