如何在Java中实现递归?我的问题是在Java中执行recusrsive方法时会发生什么.我隐约明白它使用了Stack,但我正在寻找一个清晰的例子.
Joa*_*uer 11
Java中的递归处理方式与其他(命令式)语言的处理方式不同.
有一个堆栈,它为每个方法调用保存一个堆栈帧.该堆栈是调用堆栈(或者只是"堆栈",当上下文清楚地表明它是什么意思时).堆栈上的元素称为"堆栈帧".
堆栈帧包含传入的方法参数和方法调用的局部变量(以及可能的一些其他数据,例如返回地址).
当方法调用自身(或实际上是任何方法)时,将为新调用的方法的参数和局部变量创建新的堆栈帧.
在方法执行期间,代码只能访问当前(即最顶部)堆栈帧中的值.
这样,单个(本地)变量似乎可以同时具有许多不同的值.
除了多个堆栈帧将同时表示同一方法的调用之外,不会以正常方法调用之外的任何其他方式处理递归.