public int cal(int i)
    {
        if (i>2){
            return 0;
        }
        return cal (++i)+i;     }
    public static void main(String[] argv)
    {
       SS cou=new SS();
        int i=0;
        System.out.println(cou.cal(i));
        
    }
这个为什么运行出来是6啊????求指教

解决方案 »

  1.   

    你这头像里的宿舍和我们大学的宿舍真像
    改成下面这样你能理解了么?public class Test {
    static int time=1;
    public int cal(int i)
        {
            if (i>2){
                return 0;
            }
            i=i+1;
            int ii=cal (i);
            System.out.println("第"+time+++"次调用"+",ii="+ii);
            return ii+i;    }
        public static void main(String[] argv)
        {
         Test cou=new Test();
            int i=0;
            System.out.println(cou.cal(i));
            
        }
    }
    结果:
    第1次调用,ii=0 
    第2次调用,ii=3
    第3次调用,ii=5
    6第1调用其实是递归里面的最后一次调用。。
      

  2.   

    debug跟一遍程序,观测下i的变化,走一两遍就明白了
      

  3.   

    第一次: 0+1
    第二次: 0+2
    第三次: 0+3
    return 0+0+0+1+2+3