帮忙看小java小程序,不懂结果怎么来的,有个递归

来源:百度知道 编辑:UC知道 时间:2024/05/26 01:07:37
public class _12_Read4{
int getSum(int i){
if(i==0){
System.out.print("\n");
return 1;
}
System.out.print(" "+i);
int temp=getSum(--i);
System.out.print(" "+temp);
return temp+1;
}
public static void main(String[] args){
_12_Read4 t= new _12_Read4();
t.getSum(5);
}
}
后面的1 2 3 4 5是怎么运行来的啊,就这里看不懂,讲清楚点啊,为什么是出栈呢,谢谢!

从main()开始- 对象t调用getSum()并且传了参数5
第一次循环
int getSum(int i){ //5
if(i==0){ //不满足
System.out.print("\n");
return 1;
}
System.out.print(" "+i); //输出5,4,3,2,1,1
int temp=getSum(--i); //参数减1 递归从这里开始.
System.out.print(" "+temp);//
return temp+1;
这个是死循环?应该还有限制条件吧?

/**
递归就是和栈操作差不多
从main方法开始说起:
getSum(5)判断i==0不成立
打印5
入栈语句1:
System.out.print(" " + temp);
return temp + 1;
意思的temp都是getSum(--i)的返回值

getSum(4)判断不成立
打印4
入栈语句2:
System.out.print(" " + temp);
return temp + 1;

getSum(3)判断不成立
打印3
入栈语句3:
System.out.print(" " + temp);
return temp + 1;

getSum(2)判断不成立
打印2
入栈语句4:
System.out.print(" " + temp);
return temp + 1;

getSum(1)判断不成立
打印1
入栈语句5:
System.out.print(" " + temp);
return temp +