我一直在试图找出为什么输出是 321 而不是 123。我已经尝试了多次并查看了讲座幻灯片,但我仍然无法找到这个问题的答案。
public static void main(String[] args) {
printNumber(1);
}
public static void printNumber(int n) {
if(n!=4) {
printNumber(n + 1);
System.out.print(n);
}
}
最佳答案
每次调用 printNumber
都会调用 printNumber(n+1)
,然后打印一些东西。所以 printNumber(n+1)
在 printNumber(n)
打印出它的数字之前就已经完成了。
main():
printNumber(1):
printNumber(2):
printNumber(3):
printNumber(4) // does nothing
print(n) // "3"
// printNumber(3) completes, returning control to printNumber(2)
print(n) // "2"
// printNumber(2) completes, returning control to printNumber(1)
print(n) // "1"
// printNumber(1) completes, returning control to main()
// main() completes
关于java - 递归 - Java 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47433563/