日期:2014-05-20  浏览次数:20736 次

递归问题(我自己没看出来)结果应该是6,为什么运行结果是9
public class Recursion {
public static void main(String[] args){ 
        System.out.println(f1(3));
      }
/*1*2*3*.......*n  =f(n) =f(n-1)*n
 * 
 */
public static long f1(int n){
if(n==1){
return 1;
}
return n*f(n-1);
}

------解决方案--------------------
第一趟: 3 * f1(2)

第二趟: 2 * f1(1)

第三趟: 1

所以结果是 3 * 2 * 1 = 6  

请楼主你别忽悠人好吧...

另外 return n*f(n-1);  应该是 return n*f1(n-1); 吧

又忽悠我们。
------解决方案--------------------
  public static long f1(int n){
        if(n==1){
            return 1;
        }
        return n*f1(n-1);
    }

是没问题呢!!