假设我有一个递归函数:
void Part(some args)
{
int static count=0;
if(condition)
count++;
else if(condition)
return;
else
Part(different args)
}
基本上,我想看看在整个函数调用过程中,一个条件被满足了多少次。但是,我怎样才能把这个计数返回给main()
函数呢?我使用了一个全局函数,它工作得很好,但是有些人说这是一个糟糕的实践。我不认为我可以使用一个普通的按值返回,因为它是一个递归函数。那么,有更好的方法吗?
我首先尝试将函数修改为按值返回,并在最后添加return count
,以便返回最终计数,但这不起作用,因为我在函数中已经有一个空的return
语句来手动停止控件。
2条答案
按热度按时间nimxete21#
按照您编写递归的方式,只要满足所需的计数条件,或者满足某个结束条件,循环就会结束。只有在两个条件都不满足时,您才在循环。在这种情况下,您的
count
最多不会超过1
。如果您真的想不停止地计数多个条件,请使用类似以下的语句:另一方面,如果你想继续使用你展示的代码,但不想使用全局变量(不要使用
static
局部变量,否则你永远不能多次调用你的函数,因为你永远不能将变量重置回0),那么就使用一个输出参数代替,例如:kjthegm62#