[C++] Rekurencja i zmienne statyczne

Witam!

Mam za zadanie napisać kilka funkcji, które nie mogą wykorzystywać pętli, tylko rekurencję. Stąd też poumieszczałem w funkcjach zmienne statyczne, które są wspólne dla wszystkich wywołań rekurencyjnych.

Problem w tym, że zapomniałem że po kilku wywołaniach rekurencyjnych, kiedy to z funkcji już ostatecznie wyjdziemy to za jakiś czas kiedy znowu do niej wejdziemy… zmienne statyczne zostaną zamrożone i będą miały taką wartość, jaką miały przy ostatnim wywołaniu tej funkcji.

I teraz nie wiem jak naprawić ten głupi błąd. Załóżmy, że mamy taką funkcję:

typ& at(const int& nr)

A może dodatkowy parametr funkcji z jakąś początkową wartością domyślną?

Właśnie nie mogę tak zrobić, bo wartościami domyślnymi musiałyby być składniki klasy - a wtedy pojawiają się błędy typu:

Nie mogę nawet przesyłać tych składników za każdym wywołaniem funkcji bo są prywatnymi składnikami klas - musiałbym każdą klasę zaprzyjaźniać z miejscami, w których wywołuję te funkcje…

Zrób klasę zamiast funkcji w postaci funkcjonala, obiekt stworzysz tylko raz.

Nie rozumiem, mógłbyś mi wytłumaczyć w czym to jest lepsze od zrobienia funkcji rekurencyjnych i powrzucania ich do pierwotnej funkcji rekurencyjnej :?:

Poza faktem, że każdą klasę w programie będę musiał zaprzyjaźniać z klasą z operatorem() to nie wiem jak to rozwiąże kwestię zmiennych statycznych…

W przypadku klasy masz składowe, nie potrzebujesz zmiennych statycznych.