Zacznijmy od tego, że tutaj masz odpowiedź:
http://cpp0x.pl/kursy/Kurs-C++/Poziom-5/Rekurencja/585
Drugie. Panie w czopce pirata @Kamil Żabiński "Ogólnie zmienne globalne to zło i najlepiej ich nie używać"
Czyli sugerujesz Nam, że np. serwer do gry MMORPG, powinien co jakieś 3ms ściągać dane gracza z bazy danych i w ogóle nie korzystać z globalnych zmiennych?
Tak samo, jeśli np. mamy jakąś firmową aplikację, zajmującą się obsługą klientów.. to każda jedna pojedyncza dana, powinna być ściągana co pare sekund, tylko po to, żeby pozbyć się globalnych zmiennych? Ja już nie mam wątpliwości, że ten kraj jest obsranym guwnem z wiedzą takich "dorosłych piratów", którzy budują nasz wizerunek na arenie międzynarodowej. Nie pozdrawiam.
P.S.: https://pl.linkedin.com/in/kamil-%C5%BCabi%C5%84ski chciałbym tylko spojrzeć na kawałek tego kodu wydanego z pod Pańskich łapek. I w chwili zadumy i milczenia usunąć się w cień.
Tak tutaj jeszcze nie zostałem nigdy zwyzywany.
Oczywiście, że cache różnego rodzaju jest potrzebne, nie zaprzeczam temu. Wielokrotnie także sam używałem czy to cache wewnętrze (np z Guavy) czy zewnętrzne jak Redis czy kombinowane jak Hollow.
Zauważ Pan jednak, że tutaj swoją radę kieruje do początkującego programisty, który ma problemy z najprostszym algorytmem rekurencyjnym. Zanim zacznie pisać aplikacje serwerowe minie pewnie jeszcze z rok (no chyba że naprawdę szybko się uczy). Przez ten rok zauważy pewnie, że do każdej "złotej zasady" w informatyce istnieje lista wyjątków. Niestety informatyka nie jest nauką totalnie ścisłą jak matematyka, że można udowodnić ,że jest tak, a nie inaczej. Zawsze operujemy na jakichś przybliżeniach i wzajemnie wykluczających się radach.
Serdecznie pozdrawiam
PS. Polecam medytację, żeby Pana nigdy więcej nie ponosiło.
PS2. Na co dzień najwięcej programuję w Javie (widać to dobrze na moim linkedinie). W Javie nie ma zmiennych globalnych. A nawet jeśli by się uprzeć że statyczne są globalne to odradza się ich używanie. Zamiast tego tworzy się pojedynczy obiekt, który przekazuje się wszędzie, gdzie jest potrzebny. Dzięki temu można łatwiej testować taki kod i za pomocą konfiguracji wybierać którą wersję globalnego obiektu wolimy używać