function aux(n, c) { return function(r) { return c(n*r); }; } function fact(n, c) { while(n>0) { c = aux(n, c); n--; } return c(1); }