在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java/ java函式自己調(diào)用自己

java函式自己調(diào)用自己

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)用自己,不過(guò)我無(wú)法理解,求IT大神們解釋一下,謝謝大家了。

回答
編輯回答
深記你

把你的代碼調(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
2018年4月6日 18:28
編輯回答
失魂人

最后輸出的應(yīng)該是3吧,就是遞歸運(yùn)算,進(jìn)入程序后先調(diào)用run()方法,run()調(diào)用f()方法并賦參數(shù)為3,第一次進(jìn)f()方法判斷語(yǔ)句不成立進(jìn)else,else繼續(xù)調(diào)用f()并賦值(value -1)也就是3-1 = 2 ,第二次進(jìn)f()方法判斷依舊不成立,繼續(xù)進(jìn)else 繼續(xù)調(diào)用f()并給參數(shù) value- 1 此時(shí)為2-1 繼續(xù)進(jìn)F方法 判斷成立 return 1 , 1 + 1 +1= 3

2018年8月1日 11:34
編輯回答
終相守

這是遞歸運(yùn)算,關(guān)鍵詞給你了 百度解釋很多

2018年7月13日 02:49
編輯回答
妖妖

遞歸相加 1+1+1
main()函數(shù)里的new Recursion().run();是初始化匿名函數(shù)的調(diào)用方法,所以先調(diào)用run()函數(shù),得到f(3),再調(diào)用f()函數(shù),當(dāng) f(3) 時(shí),執(zhí)行else 語(yǔ)句,return f(2) +1. 在調(diào)用一次 f(2) 執(zhí)行 else語(yǔ)句 此時(shí) 返回的是 f(2)=f(1)+1

2017年11月29日 07:57