转换思路
https://zhuanlan.zhihu.com/p/151322731
https://zhuanlan.zhihu.com/p/151380432
举例
以斐波拉契数列生成为例,典型的递归版本如下
int fibonacci(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
找到其中的方法调用,标记上 flag,并分析需要的局部变量,将代码改写为
int fibonacci(int n) {
// flag 0 函数入口
if (n == 0 || n == 1) {
return 1;
} else {
int result0 = fibonacci(n - 1);
// flag 1 第一个函数调用结束
// 拿到第一个函数的返回值,保存为局部遍历
int localVariable0 = result0;
int result1 =