#include <iostream>
// factorial operation
// fac(N) = fac(N-1) * N if N > 1
// fac(1) = 1
// recursive version of factorial
int fac(int n)
{
int temp;
cout << "before recursive call: " << n << endl;
if (n > 1)
temp = fac(n-1) * n;
else
temp = 1;
cout << "after recursive call: " << n << ", " << temp << endl;
return temp;
}
// non-recursive version of factorial
int facNR(int n)
{
int result = 1;
int i;
for (i=1; i<=n; i++)
result = result * i;
return result;
}
int main()
{
int i;
int rval, nrval;
for (i = 1; i < 10; i++)
{
rval = fac(i);
nrval = facNR(i);
cout << i << ": factorial R: " << rval
<< ", factorial NR: " << nrval << endl << endl ;
}
}