Tengo una función recursiva con una variable estática "conteo". La función incrementa el recuento de forma recursiva y dado que tiene alcance de archivo, cuando invoco foo() por segunda vez, el recuento sigue siendo igual a 5. ¿Existe alguna técnica para restablecer el recuento a 0 antes de la segunda vez que se llama a foo()?Función recursiva con la variable estática
Básicamente, no quiero que el recuento tenga un alcance de archivo, pero quiero que retenga su valor a través de diferentes iteraciones.
Una forma en que puedo pensar en hacerlo es tener un argumento en foo() para inicializar foo(). Tales como foo (recuento int). ¿Pero hay otra manera?
#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;
}
¿Hay alguna razón en particular por la que esté utilizando un conteo estático en lugar de pasarlo como un parámetro? El uso de variables estáticas en funciones recursivas como esta es generalmente considerado una mala idea, precisamente por cosas como esta. –
Sin motivo particular para la estática. De las respuestas a continuación, estoy de acuerdo en que un argumento sería la mejor manera de hacerlo. – Steve