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編程新手,以上程序是函式自己調(diào)用自己,不過我無法理解,求IT大神們解釋一下,謝謝大家了。
4 回答

holdtom
TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
把你的代碼調(diào)整成如下格式:
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,函數(shù)的調(diào)用關(guān)系如下:
main
→ f(3) // f(3) 等于 f(2) + 1
→ f(2) + 1 // 遞進(jìn)
→ f(1) + 1 // 遞進(jìn)
→ f(1) // 遇到臨界值,即 value == 1
← 1 // 返回
← 1 + 1 // 回歸
← 2 + 1 // 回歸
← 3 // f(3)返回3
添加回答
舉報(bào)
0/150
提交
取消