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);
}
}
添加回答
举报