之四 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 }

浙公网安备 33010602011771号