呵呵 在下是刚学JAVA的小菜鸟 刚看到了这个程序 不是很明白程序运行的流程 想求高手帮忙告诉下我这个程序的流程
能够细致到行帮助理解最好1 package test4;
2
3 public class Recursion {
4 public int i = -1;
5
6 public Recursion() {
7 i = getValue(17);
8 }
9
10 public int getValue(int iValue) {
11 if (iValue > 100)
12 return iValue;
13 else
14 return getValue(iValue * 2);
15 }
16
17 public static void main(String[] args) {
18 Recursion r = new Recursion();
19 System.out.println(r.i);
20 }
21}
能够细致到行帮助理解最好1 package test4;
2
3 public class Recursion {
4 public int i = -1;
5
6 public Recursion() {
7 i = getValue(17);
8 }
9
10 public int getValue(int iValue) {
11 if (iValue > 100)
12 return iValue;
13 else
14 return getValue(iValue * 2);
15 }
16
17 public static void main(String[] args) {
18 Recursion r = new Recursion();
19 System.out.println(r.i);
20 }
21}
getValue(34)
getValue(68)
getValue(136)
return 136
return 136
return 136
return 136
调用构造函数
public Recursion() {
i = getValue(17);
}
从而跳转到getValue(17)去执行
判断17是否大于100,不是,所以递归执行getValue(34),继续判断34是否大于100,不是,递归执行getValue(68),判断68是否大于100,不是,递归执行getValue(136),判断136是否大于100,是的,返回136,赋值给i,最后执行 System.out.println(r.i);
打印结果136
栈的入栈与出栈。首先把
按顺序依次入栈,
getValue(17)
getValue(34)
getValue(68)
getValue(136)
然后按顺序依次出栈,每一次出栈都会return一个值,并返还给下一个出栈的,由于下一个出栈的并没有给其进行任何操作,所以值都没有变
getValue(136)
getValue(68)
getValue(34)
getValue(17)