簡體   English   中英

將return case添加到遞歸函數

[英]adding return case to recursive function

說到遞歸,這里是我掙扎的地方,我知道函數應該為true的邊緣情況,但是因為我必須添加一個返回false語句,並且在調用堆棧的某個深處,它確實變為true (這是檢查的全部要點!),我希望最終結果是真實的,並且讓遞歸停止。 但最終,它找到了返回false的方法,僅僅因為它是函數的最后一件事。

public boolean isPathHelper(Node node, String input){
    if(node.accept == true){
        return true;
    }else{
        if(input.length() == 0){
            return false;
        }
        isPathHelper(getNextState(node, input.charAt(0) -'0'), input.substring(1));
        return false;
    }

我該如何處理這種情況? 我知道全局變量可以提供幫助,但我希望我的知識存在差距。

嘗試這個:

public boolean isPathHelper(Node node, String input, int count){
    if(input.length() == 0){
        return false; //I can't go any further: return "failed"
    }
    else if(count == input.length()){
        return true; //if I ever reach here, then I am done: return "success"
    }
    // else call self recursively
    return isPathHelper(
      getNextState(node, input.charAt(0) -'0'), input.substring(1), count+1);
}

觀察一下你的邏輯和數據不夠仔細,以確保你打“計數== input.length()”在某些時候。 最好在你用完堆棧之前的某個時候;)

暫無
暫無

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

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