簡體   English   中英

為什么這個返回的遞歸代碼不起作用?

[英]Why does this Recursion code that returns not work?

我已經在學校學習 java 幾個月了,我們開始遞歸。 你只打印東西的遞歸,void,非常簡單,但我不能完全掌握那些有回報的東西。 我剛剛編寫了一個簡單的代碼來檢查某物是否小於 50。我可以使用 num >= 50,但這只是一個概念證明。 如果超過 50,我將返回 true,如果小於 50,則返回 false。出於某種原因,它總是返回 false,即使它之前運行過 true。 我怎樣才能解決這個問題?

public static boolean greaterthanfifty(int i, int counter) {
        if(i > 0 && counter == 50) {
            System.out.println("First if: i: " + i + " counter: " + counter);
            return true;
        } else if(i <= 0 && counter == 50) {
            System.out.println("2nd if: i: " + i + " counter: " + counter);
            return false;
        } else {

            greaterthanfifty(i - 1, counter + 1);
            System.out.println("i: " + i + " counter: " + counter);
            return false;
        }
    }

嘗試這個:

public static boolean greaterthanfifty(int i, int counter) {
        if(i > 0 && counter == 50) {
            System.out.println("First if: i: " + i + " counter: " + counter);
            return true;
        } else if(i <= 0 && counter == 50) {
            System.out.println("2nd if: i: " + i + " counter: " + counter);
            return false;
        } else {
            System.out.println("i: " + i + " counter: " + counter);
            return greaterthanfifty(i - 1, counter + 1);;
        }
    }

因為:

             else {
    
                greaterthanfifty(i - 1, counter + 1);
                System.out.println("i: " + i + " counter: " + counter);
                return false;
            }

在這里,您無論如何都會返回錯誤。

暫無
暫無

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

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