Ho una funzione ricorsiva con una variabile statica "conteggio". La funzione incrementa il conteggio ricorsivo e poiché ha scope del file, quando chiamo una volta foo(), il conteggio è ancora uguale a 5. Esiste una tecnica per resettare il conteggio a 0 prima che venga chiamata la seconda volta foo()?Funzione ricorsiva con variabile statica
Fondamentalmente, non voglio contare di avere scope di file ma voglio che mantenga il suo valore attraverso diverse iterazioni.
Un modo in cui posso pensare di farlo è avere un argomento in foo() per inizializzare foo(). Come foo (int count). Ma c'è un altro modo?
#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;
}
C'è un motivo particolare per cui si sta utilizzando un conteggio statico invece di passarlo come parametro? L'uso di variabili statiche in funzioni ricorsive come questa è generalmente considerato una cattiva idea, proprio a causa di cose come questa. –
Nessun motivo particolare per la statica. Dalle risposte in basso, sono d'accordo sul fatto che un argomento sarebbe il modo migliore per farlo. – Steve