1 #include<iostream> 2 3 #include <stack> 4 5 using namespace std; 6 int factorial(int num); 7 int factorialByStack(int num); 8 9 main() 10 { 11 int n = 10; 12 int result1; 13 int result2; 14 result1 = factorialByStack(n); 15 result2 = factorial(n); 16 cout<<result1<<"---------"<<result2<<endl; 17 18 return 0; 19 } 20 21 int factorialByStack(int num) 22 { 23 stack<int> tmp; 24 for(; num != 0; --num) 25 { 26 tmp.push(num); 27 } 28 29 int result = 1; 30 31 while( !tmp.empty() ) 32 { 33 result *= tmp.top(); 34 tmp.pop(); 35 } 36 37 return result; 38 } 39 40 int factorial(int num) 41 { 42 if (1 == num) 43 {return 1;} 44 else 45 {return num*factorial(num-1);} 46 }