Java递归性的误解

标签 java

我不明白这段代码,为什么它会增加。如果我使用递归调用更改 print 语句中的顺序,这对我来说很有意义,但这就是它计数的原因。在书中,它说“System.out.println 发生在每个递归调用返回之前。因此,它是向上计数而不是向下计数。”我不明白它。感谢你的帮助。

    public static void countdown(int n)
    {
         if (n == 0) 
         {        
              System.out.println("Blastoff!");    
         } 
         else 
         {
               countdown(n - 1); 
               System.out.println(n);        

         } 
   }

最佳答案

因此,如果 n != 0,您的程序将在“else” block 中运行代码,其中又调用了 countdown(n-1) 方法。例如,如果您设置 n = 3,则只要 n > 0,此代码就会运行。因此,基本上运行方法 run 本身,如下所示:

countdown(3) 调用 countdown(2) 方法,然后 countdown(2) 调用 countdown(1)。只要 n 大于 0,就会发生这种情况。如果 n == 0,它将打印您的消息。

关于Java递归性的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49491062/

相关文章:

java - 如何共享shareBody中的所有列表项?

java - Android 实时推送到网站

java - Android - 在表格加载后添加表格行

java - 反射+spring依赖注入(inject)

java - 转到另一个选项卡时,选项卡式 android 应用程序崩溃(android -> java -> android studio)

java - 在ManyToMany上添加主键(用于发布)

java - 处理所有异常

java - Perf4j 未正确记录

java - 使用 PHP 的大型邮件发送平台

java - 基于 WSDL,如何在运行时动态生成 SOAP 请求?