javascript - 如何找到特定数字的所有可能排列?
问题描述
我试图让一些东西像这样工作:
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
解决方案
生成器的一个非常好的用例:
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]);
}
推荐阅读
- jboss - 如何让 Keycloak 使用来自 keyvault 而不是 env 文件的数据库密码
- javascript - 在 React 中,什么会为高阶组件和 redux-thunk 之类的东西调用返回函数?
- matlab - 如何在 MATLAB 中将值转换为 N 位分辨率?
- python - tmux - 如何在窗格中显示图像?
- c# - 使用反射和 new() 启动新的通用类对象
- selenium - MSEdge 驱动程序未使用 selenium 启动 Brwoser
- python - 如何在 Kivy 的 desktopApp 上制作透明屏幕?
- sql-server - TSQL:表类型未作为临时表处理?
- c - 交换字符串并检查C中的不相等条件?
- ruby-on-rails - 获取所有供应商的列表?