Widziałem przepełnienie całego stosu, np. Tutaj , tutaj , tutaj , tutaj , tutaj i kilku innych, których nie chcę wspominać, że „każdy program, który korzysta z rekurencji, można przekonwertować na program wykorzystujący tylko iterację”.
Był nawet wysoko oceniany wątek z bardzo pozytywną odpowiedzią, która powiedziała, że tak, to możliwe.
Teraz nie mówię, że się mylą. Po prostu ta odpowiedź jest sprzeczna z moją skromną wiedzą i zrozumieniem na temat komputerów.
Wierzę, że każdą funkcję iteracyjną można wyrazić jako rekurencję, a wikipedia ma takie oświadczenie. Wątpię jednak, by odwrotność była prawdziwa. Po pierwsze, wątpię, by nieprymitywne funkcje rekurencyjne można było wyrazić iteracyjnie.
Wątpię również, aby hiperoperacje można wyrazić iteracyjnie.
W swojej odpowiedzi (której nie rozumiem przy okazji) na moje pytanie @YuvalFIlmus powiedział, że nie jest możliwe przekształcenie żadnej sekwencji operacji matematycznych w sekwencję dodatków.
Jeśli odpowiedź YF jest rzeczywiście poprawna (tak mi się wydaje, ale jego rozumowanie było ponad moją głową), to czy nie oznacza to, że nie każdą rekurencję można przekształcić w iterację? Ponieważ gdyby można było przekonwertować każdą rekurencję na iterację, byłbym w stanie wyrazić wszystkie operacje jako sekwencję dodatków.
Moje pytanie brzmi:
Czy każdą rekurencję można przekonwertować na iterację i dlaczego?
Proszę dać odpowiedź jasnemu liceum lub studentowi pierwszego roku zrozumie. Dziękuję Ci.
PS Nie wiem, co to jest prymitywna rekurencja (wiem o funkcji Ackermanna, i że nie jest to prymitywna rekurencja, ale wciąż można ją obliczyć. ALL cała moja wiedza na jej temat pochodzi ze strony Wikipedii na temat funkcji Ackermanna.)
PPS: Jeśli odpowiedź brzmi „tak”, czy mógłbyś na przykład napisać iteracyjną wersję funkcji innej niż pierwotna-rekurencyjna. Np. Ackermann w odpowiedzi. Pomoże mi to zrozumieć.