public int factorial(int n) {
if (n == 0) return 1;
else return (n * factorial(n-1)); // tail recursion
}
public int factorial(int n) {
int product = 1;
int i;
for (i = n; i >= 1; i--)
product = i * product; // without tail recursion
return product;
}