int fac2(int result,int n){ if (n<=1) return result; return fac2(n*result,n-1); } int fac1(int n){ return fac2(1,n); } int fac3(int result,int n){ anfang: if (n<=1) return result; result*=n; n-=1; goto anfang; //return fac3(result*n,n-1); } int fac(int n){ int result; if (n==0) goto eins; result = n*fac(n-1); goto ende; eins: result = 1; ende: return result; }