循环内部的递归,它是如何工作的?

Moh*_*oud 4 java recursion while-loop

你能告诉我这个java代码是如何工作的吗?:

public class Main {
    public static void main (String[] args)  {
        Strangemethod(5);
    }
    public static void Strangemethod(int len) {
        while(len > 1){
            System.out.println(len-1);
            Strangemethod(len - 1);
        }
}
}
Run Code Online (Sandbox Code Playgroud)

我尝试调试它并一步一步地遵循代码,但我不理解它.

更新:对不起我没有提到我知道这段代码的结果,但只是想知道执行的步骤..

dan*_*uer 13

那将打印4 3 2 1 1 1 1 1 1 ...

并陷入循环,因为没有任何东西在while循环的范围内修改len.第一次调用(len = 5,4,然后是3)经历一次循环迭代,并等待Strangemethod返回.当len = 2时,while循环调用strangemethod(1),并且由于len不大于1,while循环结束并且该调用返回.但len仍然是最底部剩余的whle循环中的2,所以它再次称为奇怪的方法(2).然后再次.然后再次.

if()比while()更合适.