我在c ++中创建了一个递归函数,我希望在执行所有递归调用后,当我返回到函数的第一个递归调用时,仅执行函数内部的特定语句。基本上,我希望有一种机制可以执行一次语句,但是当控件返回到第一个递归调用时才可以执行。我尝试了static,但实际上为所有递归函数创建了一个副本,因此每次控件遇到代码中的特定行时,它都会更改,而我不希望这样做。我只想要一次,但是当控件返回到第一个递归调用时。
是否有任何关键字或机制来处理此行为,或者我仅需要通过一些条件逻辑来做到这一点?
答案 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来调用此方法,可以使此方法更加优雅。