以下代码的输出是什么

时间:2018-08-08 04:42:24

标签: java

它应该只打印数字:-1
但它正在打印编号:-1 0 1 2
为什么要印刷此系列? 我希望System.out.println只会执行一次。

class MemoryJava {  
     public static void main(String[] args){
        decreaseNumberbyOne(2);
    }   
    public static void decreaseNumberbyOne(int num){    
        if(num >= 0){           
            decreaseNumberbyOne(num -1);
        }   
        System.out.println("Number:"+num);
    } 
}

2 个答案:

答案 0 :(得分:4)

这是事件的顺序:

  • 致电(2)
  • 致电(1)
  • 致电(0)
  • 致电(-1)
  • 请勿拨打(-2),因为<0
  • 打印-1
  • 返回
  • 打印0
  • 返回
  • 打印1
  • 返回
  • 打印2
  • 返回

这称为递归。

我将显示带有else的代码来帮助您实现所需的输出,但为此请看死池的另一个答案。

答案 1 :(得分:1)

尝试该方法将起作用,只是在您的代码中输入错误,在else块中添加System.out.println("Number:"+num);

public static void main(String[] args){
    decreaseNumberbyOne(2);
}   
public static void decreaseNumberbyOne(int num){    
    if(num >= 0){           
        decreaseNumberbyOne(num -1);
    } else{  
    System.out.println("Number:"+num);
     }
}