递归函数中的全局变量如何将其保持为零?

Gra*_*min 2 java recursion

所以,如果我有一个带有全局变量var_的递归函数:

int var_;

void foo()
{
  if(var_ == 3)
    return;
  else
    var_++; foo();
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个函数调用foo()所以:

void bar()
{
  foo();
  return;
}
Run Code Online (Sandbox Code Playgroud)

什么是每次调用foo时设置var_ = 0的最佳方法,而不是来自内部.我知道我可以这样做:

void bar()
{
  var_ =0;
  foo();
  return;
}
Run Code Online (Sandbox Code Playgroud)

但我正在使用递归函数,我不想调用foo而忘记在以后设置var_ = 0.

有没有人对如何解决这个问题有任何建议?

谢谢,乔希

Lov*_*ing 6

foo()成一个辅助功能.

void foo() {
    var_ = 0;
    foo_helper();
}

void foo_helper() {
    if(var_ == 3)
        return;
    else
        var_++; foo_helper();
}
Run Code Online (Sandbox Code Playgroud)

您不必更改任何现有代码,您仍然可以调用foo()并让它完成其工作.