递归示例
下面列举一个很简单的递归例子
public class ReturnT {
public static void main(String[] args) {
int a = f(3);
System.out.println(a);
}
private static int f(int value) {
if (value == 1) {
return 1;
} else {
int ret=f(value - 1) + 1;
return ret;
}
}
}
之前有看到这么个调用顺序,还是不大明白,后续自己跑了下
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
当 # f()方法块传入value=3时 上面整个代码调用我们可以近似的看做
public class ReturnT {
public static void main(String[] args) {
int a = f1(3);
System.out.println(a);
}
private static int f1(int value) {
int ret = f2(2) + 1;
return ret;
}