[英]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.