Observe that factorialTimes(0, m) = m×0! = m. That handles the base case. Now, suppose that n > 0. Then
factorialTimes(n, m) | |
= m×n! | |
= m×n×(n−1)! | |
= factorialTimes(n−1, m×n) |
// factorialTimes(n,m) returns m*n!. long factorialTimes(long n, long m) { if(n == 0) { return m; } else { return factorialTimes(n-1, m*n); } }