在C ++中的特定递归调用中执行语句

时间:2018-10-16 08:38:02

标签: c++ recursion

我在c ++中创建了一个递归函数,我希望在执行所有递归调用后,当我返回到函数的第一个递归调用时,仅执行函数内部的特定语句。基本上,我希望有一种机制可以执行一次语句,但是当控件返回到第一个递归调用时才可以执行。我尝试了static,但实际上为所有递归函数创建了一个副本,因此每次控件遇到代码中的特定行时,它都会更改,而我不希望这样做。我只想要一次,但是当控件返回到第一个递归调用时。

是否有任何关键字或机制来处理此行为,或者我仅需要通过一些条件逻辑来做到这一点?

2 个答案:

答案 0 :(得分:2)

为什么不只是

void real_recursive_call() {
    // do recursive work
}

void recursive_call() {
    real_recursive_call();
    do_something();
}

int main() {
    recursive_call();
}

答案 1 :(得分:0)

那呢:

void Plus(int Val, bool bFirstCall = true)
{
    // Show the current depth for debugging purposes:
    std::cout << "current val: " << Val << std::endl;

    // Increase the depth and call the recursive function with bFirstCall == false explicitly
    if (++Val < 100) Plus(Val, false);

    if (bFirstCall)
    {
        std::cout << "This is the first call" << std::endl;
    }
}

通过将递归方法设置为私有,并使用bFirstCall = true来调用此方法,可以使此方法更加优雅。