5 回答

TA貢獻1777條經驗 獲得超10個贊
因為length永遠不會更新。
while (length > 1){
System.out.print((length - 1) + " ");
xMethod(length - 1);
length--;
}

TA貢獻1864條經驗 獲得超6個贊
正如另一個答案所指出的那樣,您需要減少length變量以解決您當前的問題length = length - 1or length--。(我讓我的“同事”回答更好地解釋它)。
我的回答主要是關于你對遞歸方法的使用。
你可能想要的是一個簡單的if條件。遞歸將充當循環。
public static void xMethod(int length) {
length--;
System.out.print((length) + " ");
if (length > 1){
xMethod(length);
}
}
xMethod(5) > 4 3 2 1
public static void xMethod(int length) {
length--;
if (length > 1){
xMethod(length);
}
System.out.print((length) + " ");
}
xMethod(5) > 1 2 3 4

TA貢獻2041條經驗 獲得超4個贊
長度完全沒有變化
class Test {
public static void xMethod(int length) {
while (length > 1){
System.out.print((length - 1) + " ");
xMethod(length-1);
//need to change the length here
}
}
public static void main(String[] args){
xMethod(5);
}

TA貢獻1995條經驗 獲得超2個贊
這里要補充的重要一點是了解分配在 Java 中是如何工作的。
的值length
沒有改變,因為當您在方法中傳遞一個值并且它進入while
循環時,當條件停止而不是xMethod(length-1);
您使用的遞歸時循環停止。這就是為什么即使您添加length--
它也不會打印您想要的內容。
因此,要使程序正常運行,您必須
為
length
變量賦值更改或刪除遞歸。
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html
一旦你瀏覽了這個鏈接,你就會明白為什么價值沒有改變。
注意:從鏈接中您知道length--
等于length = length -1
,所以基本上我們必須將更新后的值分配給length
變量。

TA貢獻1772條經驗 獲得超6個贊
長度始終具有值 5。您應該將 length-1 替換為 length--。
class Test {
public static void xMethod(int length) {
while (length > 1){
System.out.print((length--) + " ");
xMethod(length);
}
}
public static void main(String[] args){
xMethod(5);
}
}
添加回答
舉報