当前位置:编程学习 > JAVA >>

java程序

 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啊????求指教 --------------------编程问答-------------------- 你这头像里的宿舍和我们大学的宿舍真像。。。
改成下面这样你能理解了么?

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调用其实是递归里面的最后一次调用。。

--------------------编程问答-------------------- 啊 明白了。我刚没注意,应该后面加的应该是++后的i。谢谢了 --------------------编程问答-------------------- 大神的回答很棒 以后把递归拆开写看的比较清楚 也能屡清思路 --------------------编程问答-------------------- debug跟一遍程序,观测下i的变化,走一两遍就明白了 --------------------编程问答-------------------- 第一次: 0+1
第二次: 0+2
第三次: 0+3
return 0+0+0+1+2+3 --------------------编程问答-------------------- 好难看懂! --------------------编程问答-------------------- 这不就是++i和i++的问题吗?
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,