我必须实现一个计数器来计算此递归函数中加法运算的数量,但不允许使用全局变量。你知道怎么做吗?例如,如果函数必须调用自己的空闲时间,则必须在返回之前在函数末尾将我的计数器加三。

long lindh(unsigned int n) {

  long lin = 0;
  if (n == 1 || n == 2) {
    lin = 1;
  } else {
    lin = 1 * lindh(n - 1) + 3 * lindh(n - 2);
  }

  return lin;
}

int main() {
  long b = 0;
  b = lindh(24);

  cout << "lindhauer " << b << endl;

  return 0;
}

最佳答案

您可以将函数签名更改为:

long lindh(unsigned int n, int &count)


在初始调用和每个递归调用中,都将要计数的变量传递给它。在适当的位置递增count

07-28 05:43