-3
我试图理解这种递归方法,但我感到困惑。不同调用的Java递归方法 - 难以遵循的变量值
输出是: X:3 X:4 X:3 Y:4
我终于明白了这一步:在第一个x:3被打印出来,因为我们通过数字3和4.然后它再次用x-1,y调用该方法。但职位交换。请解释第二次方法调用后x和y的值在不同的点上以及它们在每次调用后如何改变。谢谢。
public class Test {
public static void obscure (int x, int y){
if (x * y <= 4){
return;
}
System.out.println("x: " + x); // X ist 4
if (x >= y){
obscure(x-1, y);
}else{
obscure(y,x-1);
System.out.println("y: " + y);
}
}
public static void main(String[] args){
obscure(3,4);
}
}
使用调试器。 –
'但是职位交换'这是正确的。 '如果(x> = y){' - 'x'这里是'3','y'是'4'。它转到'else'块,将'y'作为第一个参数,将'x-1'作为第二个参数。 – BackSlash
欢迎来到Stack Overflow!它看起来像你需要学习使用调试器。请帮助一些[互补调试技术](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。如果您之后仍然遇到问题,请随时回答一个更具体的问题。 –