
- long factorial(int n){
- long result;
- if(n==0 || n==1){
- result = 1;
- }else{
- result = factorial(n-1) * n; // 递归调用
- }
- return result;
- }
result
= factorial(n-1) * n;,即result
= factorial(5-1) * 5;,接下来也就是调用factorial(4)。这是第一次递归。注意:为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段。常用的办法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。递归调用不但难于理解,而且开销很大,如非必要,不推荐使用递归。很多递归调用可以用迭代(循环)来代替。
- long factorial(int n){
- int i;
- long result=1;
- if(n==0 || n==1){
- return 1;
- }
- for(i=1; i<=n; i++){
- result *= i;
- }
- return result;
- }
原文:http://blog.csdn.net/shuimanting520/article/details/51360134