c++ - 如何在 C++ 中找到递归函数的深度

标签 c++ recursion

如何在不传递上一级的情况下在 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/

相关文章:

java - 没有循环就循环?

c++ - 模板非类型模板化引用参数

c++ - glGetnUniformfv 无故崩溃?

c++ - 错误 LNK2028 : unresolved token

iphone - 在 sqlite 中递归进行递归计算的替代方案?

java - 这种递归回溯解决方案如何解决算术表达式?

c++ - 使用指向基抽象类的指针访问子类成员

c++ - 在 NULL 指针上调用 delete 或 delete[]

recursion - Prolog 递归循环永远

algorithm - 计算递归算法的 Big O 复杂度