JSFiddle - React, Tailwind, and code Playground
by mgibsonbr
HTML
A: <input value="1"> B: <input value="10"> M: <input value="4"><button>Calcular</button>
<ul></ul>
JavaScript
function combinacoes(a, b, m, acc, retorno) {
if ( acc == undefined ) acc = [];
if ( retorno === undefined ) retorno = [];
if ( m == 0 ) {
retorno.push(acc);
return retorno;
}
if ( a > b )
return retorno;
// Primeiro fazemos todas as combinações que incluem a
combinacoes(a+1, b, m-1, acc.concat([a]), retorno);
// Depois todas as que não incluem a
return combinacoes(a+1, b, m, acc, retorno);
}
$("button").click(function() {
var ul = $("ul").empty();
var a = parseInt($("input:eq(0)").val(), 10);
var b = parseInt($("input:eq(1)").val(), 10);
var m = parseInt($("input:eq(2)").val(), 10);
$.each(combinacoes(a, b, m), function() {
ul.append("<li>" + JSON.stringify(this) + "</li>");
});
});