之四 N的阶乘(非递归&递归)

之前笔试上海网达的时候碰到这道题:

先用非递归来做:

 1 int func(int n)
 2 {
 3     if ( 0 == n)
 4         return 0;
 5     int ans = 1;
 6     for (int i = n; i >=1; --i)
 7     {
 8         if (i == 1)
 9         {
10             cout << 1 << endl;
11             break;
12         }    
13         cout << i << "*";        
14         ans *= i;
15     }
16     cout << "ans = " << ans << endl;
17 }

测试一下结果:

int main(int argc, char *argv[])
{
    func(10);
    system("PAUSE");
    return EXIT_SUCCESS;
}

 

用递归的方法来做:

 1 int func(int n)
 2 {
 3     if (n == 1)
 4     {
 5         cout << 1 << endl;
 6         return 1;
 7     }
 8     cout << n << "*" ;    
 9     return n*func(n-1);    
10 }

测试一下:

1 int main(int argc, char *argv[])
2 {
3     int ans = func(10);
4     cout << "ans = " << ans << endl;
5     system("PAUSE");
6     return EXIT_SUCCESS;
7 }

posted on 2012-11-17 19:56  乐则行之  阅读(134)  评论(0)    收藏  举报

导航