Java递归方法中的程序流

时间:2018-12-29 11:26:04

标签: java recursion methods

class Test {

    int i=0;

    void method2() {

        if(i==6) return;
        System.out.print("before");
        i++;
        method2();
        System.out.println("after"):            
    }
}

如果我从另一个类中调用method2(),那么我想知道程序在这里的流向或执行输出的原因。

1 个答案:

答案 0 :(得分:1)

在这里可以找到更深入的递归知识 https://en.m.wikipedia.org/wiki/Recursion_(computer_science) 就您的程序而言,它将在i = 6时停止 否则它将继续打印。 这是因为在编程过程中,控制流永远不会被跳过,它遵循控制流,但并不是它留下了rest语句,因此,无论何时生成对函数的新调用,函数的先前状态都会被压入堆栈1中。如此一来,堆栈就不断增加,最终达到结束条件时,它会从激活记录中逐一弹出所有函数调用,并完成所需的处理,从而递归起作用。 它需要堆栈的帮助来进行操作。 程序流程始终遵循您从任何地方调用它的顺序。 因此程序流程保持不变。 如果您运行它并添加一些带有i值的打印语句,您将很容易理解其工作原理。