簡體   English   中英

java中遞歸方法的程序流程

[英]program flow in recursive method in java

class Test {

    int i=0;

    void method2() {

        if(i==6) return;
        System.out.print("before");
        i++;
        method2();
        System.out.println("after"):            
    }
}

如果我從另一個類調用method2() ,那么我想知道程序將如何在此處流動或為什么執行輸出。

遞歸的深入知識可以在這里找到https://en.m.wikipedia.org/wiki/Recursion_(computer_science)就您的程序而言,它會在 i=6 時停止,否則它將繼續打印。 這是因為在編程中,控制流永遠不會被跳過,它遵循控制流,但並不是說它離開了 rest 語句,因此每當生成對函數的新調用時,函數的先前狀態都被推入堆棧 1一個一個,所以堆棧不斷增加,當最終達到結束條件時,它從活動記錄中一一彈出所有函數調用,並完成所需的處理,從而遞歸工作。 它需要堆棧的幫助來進行操作。 無論您從任何地方調用它,程序流始終遵循它的順序。 所以程序流程保持不變。 如果您運行它並添加更多帶有 i 值的打印語句,您將很容易理解它的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM