inverse(F)(N) = findArg(F, N, 0);

findArg(F, N, X) = f(X) == N ? X : findArg(F, N, X+1);


f(N) = N < 2 ? 1 : N*f(N-1);