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