簡體   English   中英

即使在Java中執行了return之后,方法的執行

[英]Execution of method even after return is executed in java

這是我的代碼(方法):

    int temp =0;
    result=false;
    isPossible(temp);
    if(result) System.out.println("YES");
    else System.out.println("NO");
}} private static void isPossible( int i) {
    if(i>n || i+m >= n || i==n-1){
        result =true;
        return; 
    }
    if(visitedArray[i] == true){
        System.out.println(A[i]+"d");
        return;
    }
    visitedArray[i]= true;
    if (i+1 < n && A[i+1]==0){
        System.out.println(A[i]+"a");
        isPossible(i+1);            
    }
    if (i-1>=0 && A[i-1]==0){
        System.out.println(A[i]+"b");
    isPossible(i-1);
    }
    if(A[i+m]==0 && i+m < n){
     System.out.println(A[i]+"c");
        isPossible(i+m);
    }
}

輸出為:

0c 0b 0a 0d 0c YES

我想知道為什么即使執行了return之后仍執行最后一個if循環,即為什么即使在執行了return的“ 0d”之后輸出仍打印“ 0c”呢?

事實是,在您打印a或b的情況下,您再次調用了isPossible方法,但是您沒有返回。 程序的流程可以是:

  1. 第一循環-打印C並進入第二循環
  2. 第二個循環-打印B並進入第三個循環(注意-循環#2未完成)
  3. 第三循環-打印A並進入第四循環(注意-循環#3未完成)
  4. 第四個循環-打印D,返回
  5. 現在我們回到第三循環的繼續,它可以再次打印C並再次遞歸一次

不知道YES打印來自哪里,沒有出現在您的已發布代碼中,但是您知道了

暫無
暫無

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

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