public class Recursion {
public static void main(String[] args) {
new Recursion().run();
}
public void run(){
int value = f(3);
System.out.println(value);
}
public int f(int value){
if (value == 1) {
return 1;
} else {
return f(value - 1) + 1;
}
}
}java编程新手,以上程序是函式自己调用自己,不过我无法理解,求IT大神们解释一下,谢谢大家了。
4 回答
holdtom
TA贡献1805条经验 获得超10个赞
把你的代码调整成如下格式:
public static void main(String[] args) {
f(3);
}
private static int f(int value) {
if (value == 1) {
return 1;
} else {
int ret = f(value - 1) + 1;
return ret;
}
}
f(3)最终返回3,函数的调用关系如下:
main
→ f(3) // f(3) 等于 f(2) + 1
→ f(2) + 1 // 递进
→ f(1) + 1 // 递进
→ f(1) // 遇到临界值,即 value == 1
← 1 // 返回
← 1 + 1 // 回归
← 2 + 1 // 回归
← 3 // f(3)返回3
添加回答
举报
0/150
提交
取消
