今天看到栈了,发现了实现阶乘的第三种方法
第一种:
long max = 12;
long result = 1;
for(long n = max; n <=max; n--)
{
result = result * n;
}
第二种:
int calculateFactorial( int n ){
if( n==1 ){
return n;
}
return n * calculateFactorial( n-1 );
}
第三种:
long fact(int n,Stack<int>& S)
{
Assert((n>=0)&&(n<=12),"Input out of range");
while(n>1) S.push(n--);
long result = 1;
int val;
while(S.pop(val)) result = result * val;
return result;
}