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