JSFiddle - React, Tailwind, and code Playground
HTML
N: <input type="text" id="N" /><br/>
L: <input type="text" id="L" /><br/>
R: <input type="text" id="R" /><br/>
<input type="button" id="go" value="test" />
JavaScript
function g(N, L, R) {
var acc = 0;
for (var k=1; k<=N; k++) {
acc += comb(N-1, k-1) * f(k-1, L-1) * f(N-k, R-1);
// alert("Pasada "+k+": "+comb(N-1, k-1)+" * "+f(k-1, L-1)+" * "+f(N-k, R-1)+" = "+comb(N-1, k-1) * f(k-1, L-1) * f(N-k, R-1));
}
return acc;
}
function f(N, L) {
if (N==L) return 1;
else if (N<L) return 0;
else {
var acc = 0;
for (var k=1; k<=N; k++) {
acc += comb(N-1, k-1) * f(k-1, L-1) * fact(N-k);
}
return acc;
}
}
function comb(n, k) {
return fact(n) / (fact(k) * fact(n-k));
}
function fact(n) {
var acc = 1;
for (var i=2; i<=n; i++) {
acc *= i;
}
return acc;
}
$("#go").click(function () {
alert(g($("#N").val(), $("#L").val(), $("#R").val()));
});