首页 > 解决方案 > 如何找到特定数字的所有可能排列?

问题描述

我试图让一些东西像这样工作: function permutations(sumWorkingFor, [numbersAllowed, numbersAllowed]) {} 例如permutations(5, [1,2])它会给:

1, 1, 1, 1, 1
1, 1, 1, 2
1, 1, 2, 1
1, 2, 1, 1
2, 1, 1, 1
2, 2, 1
2, 1, 2
1, 2, 2

标签: javascript

解决方案


生成器的一个非常好的用例:

  function* sum(target, numbers, previous = []) {
    if(target === 0) yield previous;
    if(target <= 0) return;
    for(const n of numbers) 
       yield* sum(target - n, numbers, [...previous, n]);
  }

推荐阅读