int fact(int n) { if (n<2) return 1; else return n*fact(n-1); } // not tail recursive int fact2(int n, int ax) { if (n<2) return ax; else return fact2(n-1,n*ax); }