我有一个带有静态变量“count”的递归函数。该函数递归递增计数,因为它有文件范围,当我第二次调用foo()时,count仍然等于5.是否有一种技术在第二次调用foo()之前将count重置为0?具有静态变量的递归函数
基本上,我不希望计数有文件范围,但我希望它通过不同的迭代保留其价值。
我能想到的一种方法是在foo()中有一个参数来初始化foo()。如foo(int count)。但还有另一种方式吗?
#include <iostream>
using namespace std;
void foo()
{
static int count = 0;
if(count<5)
{
count++;
cout<<count<<endl;
foo();
}
else
{
cout<<"count > 5"<<endl;
}
}
int main()
{
foo(); //increment count from 0 to 5
foo(); //count is already at 5
return 0;
}
是否有一个特定的原因,你使用静态计数,而不是将它作为参数传递?在像这样的递归函数中使用静态变量通常被认为是一个坏主意,正是因为这样的事情。 – 2009-08-22 19:33:43
静态无特殊原因。从下面的答案中,我会同意一个论点将是最好的方式去做这件事。 – Steve 2009-08-22 21:33:54