我如何在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--;
}

递归功能完成后,这将重置计数器,但仍会跟踪递归的最大深度。

除了快速测试之外,我不会将此类静态变量用于其他任何事情,但很快就会被删除。如果您确实需要持续跟踪此问题,则有更好的方法。

10-08 09:26