如何在不传递上一级的情况下在 C++ 中找到递归函数内的当前深度?即是否可以知道函数被调用了多少次而不使用参数来跟踪级别并在每次调用函数时将该数字作为参数传递?
例如我的递归函数是这样的:
DoSomething(int level)
{
print level;
if (level > 10)
return;
DoSomething(++level);
}
main
{
DoSomething(0);
}
最佳答案
基于 JoshD 已经给出的答案:
void recursive()
{
static int calls = 0;
static int max_calls = 0;
calls++;
if (calls > max_calls)
max_calls = calls;
recursive();
calls--;
}
这会在递归函数完成后重置计数器,但仍会跟踪递归的最大深度。
除了快速测试之外,我不会将这样的静态变量用于任何其他用途,很快就会被删除。如果您确实需要持续跟踪这一点,则有更好的方法。
关于c++ - 如何在 C++ 中找到递归函数的深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4056348/