簡體   English   中英

遞歸倒計時

[英]Recursive countdown

我需要在 Java 中創建一個遞歸倒計時方法,用戶可以在其中輸入倒計時的maxmin 打印應該在main

這是我的代碼:

static void stej(int max, int min) {
    if(max==min)
        System.out.print(min);
    else {
        System.out.print(max + " ");
        stej(max-1);
    }
}

遞歸調用中缺少一個參數:

static void stej(int max, int min) {
    if (max == min) {
        System.out.print(min);
    } else {
        System.out.print(max + " ");
        stej(max - 1, min);
    }
}

至於在main中打印,您不能這樣做,除非您將所有代碼移動到main

您的方法有兩個參數(最大和最小),但您只用一個參數調用。

static void stej(int max, int min) {
    if(max==min)
        System.out.print(min);
    else {
        System.out.print(max + " ");
        stej(max-1, min);
    }
}

你有幾個問題:

  • 正如評論者指出的那樣,您收到了編譯時錯誤,因為您在遞歸調用中使用的參數計數與方法聲明中的不同
  • 另一個是您沒有正確檢查限制遞歸的邊界。

下面的解決方案應該處理這兩個問題:

static void stej(int max, int min) {
    if (max < min) {        // If the arguments are reversed
        setj(min, max);     // Recursively swap them to continue
    } else {
        System.out.print(max + " ");   // Only need to print once
        if (max > min) {               // Only apply recursion if they are different
            stej(max-1, min);
        }
    }
}

暫無
暫無

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

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