Mam funkcję rekursywną ze statyczną zmienną "count". Funkcja zwiększa liczbę rekursywnie, a ponieważ ma zasięg pliku, gdy wywołuję foo() po raz drugi, liczba jest wciąż równa 5. Czy istnieje technika resetowania zliczenia do zera przed drugim wywołaniem foo()?Funkcja rekursywna ze zmienną statyczną
Zasadniczo nie chcę, aby liczyć zakres pliku, ale chcę, aby zachować jego wartość poprzez różne iteracje.
Jeden sposób, w jaki mogę to zrobić, to mieć argument w foo(), aby zainicjować foo(). Takich jak foo (int count). Ale czy istnieje inny sposób?
#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;
}
Czy istnieje szczególny powód, dla którego używasz statycznego licznika zamiast podawania go jako parametru? Używanie zmiennych statycznych w takich rekurencyjnych funkcjach jest ogólnie uważane za zły pomysł, właśnie z powodu takich rzeczy jak ta. –
Bez szczególnego powodu dla statycznego. Z poniższych odpowiedzi zgadzam się, że najlepszym argumentem na ten temat byłaby argumentacja. – Steve