java - 为什么这个递归方法超出了我的预期

2 java recursion

做一个非常简单的程序来测试递归.程序打印一些东西,直到数字不大于0.

public class TestIt {

public static void print(int f){
    while(f>0){
        System.out.println("Not today");
        f--;
        print(f);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码是从主程序中调用的.

public static void main(String[] args) {
  TestIt.print(2);
}
Run Code Online (Sandbox Code Playgroud)

也许我终于失去了理智,但程序打印的次数超出了我的预期.如果我向方法发送3,则程序打印7次.任何想法为什么?

Raf*_*ima 5

因为你做错了

while(f>0){
    System.out.println("Not today");
    f--;
    print(f);
}
Run Code Online (Sandbox Code Playgroud)

print在循环时间调用方法f,
因为它是递归的,它将被称为f-1次递归

所以这将是ffial时代

删除while循环,将按您的意愿工作