gpt4 book ai didi

Java 方法执行最后一个打印语句 3 次,即使该方法只被调用一次

转载 作者:行者123 更新时间:2023-12-01 17:47:41 25 4
gpt4 key购买 nike

我试图弄清楚为什么 Java 中的这个神秘方法会打印出“43211234”。我理解程序如何达到“43211”,但我不确定“if”之后的最后一个 System.out.print(x % 10) 是如何运行 3 次的,并且每次都会将 x 的值带回到当前值之前的值,直到达到 x 的值“1234”。这是否与递归有关,因为该方法在“if”中被调用了 3 次?我猜这就是类似的事情,因为最后一个也恰好执行了 3 次。我将非常感谢你的帮助。谢谢。

class Main {
public static void main(String[] args) {
mystery(1234);
}
public static void mystery(int x) {
System.out.print(x % 10);
if((x / 10) != 0) {
mystery(x / 10);
}
System.out.print(x % 10);
}
}

最佳答案

不确定我的答案是否比以前的答案更有用,但我会尝试。因此,基本上,您的程序使用两种类型的递归:后向递归和前向递归。我在这里的回答不是向您描述它们,而是为您提供有关它们的更多信息的起点。

让我们跟踪程序的执行情况:神秘(1234) -> 打印(4) -> 神秘(123);此时,方法末尾的 System.out.print(x % 10); 尚未被调用,因为您的程序已经进一步递归了。一旦程序从递归深处返回,它将被执行,并将执行剩下的内容。

mystery(1234):
print(4);
mystery(123):
print(3);
mystery(12):
print(2);
mystery(1);
print(1);
print(1); //This is the first System.out.print(x % 10); from the end of the method, that is executed
print(2);
print(3);
print(4);

关于Java 方法执行最后一个打印语句 3 次,即使该方法只被调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53239788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com