我知道递归函数是什么以及如何可视化堆栈顶部的每个递归调用。但是我不知道当函数像
这样对自身进行多次调用时如何思考float foo(int n){
int a = 0;
for(int i = 0; i < n; i++)
a += 1;
if (n > 2)
return foo(n/2) + foo(n/2); // What happens here?
return a;
}
我现在应该考虑两个不同的堆栈还是可视化结果的最佳方式是什么?
最佳答案
正如其他答案所提到的,只有一个堆栈和递归调用严格按照给定顺序求值。
但是,出于分析目的,您可以将整个调用序列可视化为一棵树。
关于c++ - 多次递归调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30567825/