Mam jakąś funkcję typu void
, która ma się rekurencyjnie wykonywać w nieskończoność. Przykładowo:
void recursion()
{
std::cout << "Ala ma kota\n";
std::cout << "Ala ma psa\n";
recursion();
}
Chciałbym aby pierwsza instrukcja tj. std::cout << "Ala ma kota\n";
wykonała się tylko raz (lub N
razy). Ale właśnie: jak to ograniczyć, żeby wykonało się tylko raz?
Koniecznie nie chcę przekazywać żadnych dodatkowych parametrów, ani korzystać z zmiennych spoza ciała funkcji. Cała reszta dozwolona.
Z zmienną spoza ciała funkcji można to rozwiązać (niekoniecznie kulturalnie) np. tak:
bool didRecursionStart = false;
void recursion()
{
if (!didRecursionStart)
std::cout << "Ala ma kota\n";
std::cout << "Ala ma psa\n";
didRecursionStart = true;
recursion();
}
ale definiując ją w środku ciała funkcji będzie się to nadpisywać i nie zadziała. Próbowałem też robić liczniki, które działałyby na podobnej zasadzie, ale też definicja się jakby nadpisuje.
Jakiś pomysł?