class factorials { public static void main(String[] args) { int a; fact A = new fact(); System.out.println("\nthe factorial of 6 is "); a = A.f1(6); System.out.println( a ); System.out.println("with tail-recursion it's also "); a = A.f2(6,1); System.out.println( a ); System.out.println("without recursion it's still "); a = A.f3(6); System.out.println( a ); } } class fact { public int f1(int n) { int a; if (n<2) a=1; else a = n * (this.f1(n-1)); return a; } public int f2(int n, int accum) // accum must be initially 1 { int a; if (n<2) a = accum; else a = this.f2(n-1,accum*n); return a; } public int f3(int n) { int accum = 1; while (1