java - 递归 - Java 编程

标签 java

我一直在试图找出为什么输出是 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/

相关文章:

java - elasticsearchrepository 在字段中保存空值

java - 仅在一个目录的命令行中设置 Java 路径

java - 是否可以通过样式隐藏文本?

java - 在ZK中我们可以PostNotifyChange多个变量吗

java - 使用 Jess 在本体中插入当前日期和时间

Java的最大线程数非常有限?

java - main方法执行失败故障?

java - Spring Controller 不通过RequestBody或RequestParam接收文件

java - 如何将 SVG 路径 (SVGOMPathElement) 转换为点数组?

java - 确定 FloatBuffer 中的元素数