第一篇探索栈的数据结构:
铭信:递归函数转非递归(通用方法)[1/2]——数据结构zhuanlan.zhihu.com最终确定函数调用时,开辟的空间如下图所示
在 Java 代码中可以使用 Object[] 表示一个栈帧,因为栈中对象的格式有明确规定,所以可以放心进行转换类型。
阶乘 factorial(int n) 转非递归
先看一个简单的例子,阶乘
int
为了方便分析,明确指出函数的返回值,并做上 flag 标记,0表示从头开始执行,1标志从第一次函数调用后执行。
int
可以看到 factorial() 函数接受一个入参 int n,没有局部变量,因此栈帧是
{
转换成非递归后,形式如下
带有局部变量的情况代码较长,放在 CSDN 中供大家查阅。
递归函数转非递归(通用方法)_madokast信徒避风港-CSDN博客blog.csdn.net