Tenho visto em todo estouro de pilha, por exemplo, aqui , aqui , aqui , aqui , aqui e alguns outros eu não me importo de mencionar, que "qualquer programa que usa recursão pode ser convertido em um programa usando apenas iteração".
Havia até mesmo um altamente upvoted fio com um altamente upvoted resposta que disse sim, é possível.
Agora não estou dizendo que eles estão errados. É que essa resposta contraria meu escasso conhecimento e compreensão sobre computação.
Acredito que todas as funções iterativas podem ser expressas como recursão, e a Wikipedia tem uma declaração nesse sentido. No entanto, duvido que o inverso seja verdadeiro. Por um lado, duvido que funções recursivas não primitivas possam ser expressas iterativamente.
Também duvido que as hiperoperações possam ser expressas iterativamente.
Em sua resposta (que não entendo a propósito) à minha pergunta, o YuvalFIlmus disse que não é possível converter nenhuma sequência de operações matemáticas em uma sequência de adições.
Se a resposta de YF estiver realmente correta (acho que está, mas o raciocínio dele estava acima da minha cabeça), isso não significa que nem toda recursão pode ser convertida em iteração? Como se fosse possível converter todas as recursões em iterações, eu seria capaz de expressar todas as operações como uma sequência de adições.
Minha pergunta é esta:
Toda recursão pode ser convertida em iteração e por quê?
Por favor, responda que um colegial brilhante ou um aluno do primeiro ano do ensino médio entenderão. Obrigado.
PS: Eu não sei o que é recursiva primitiva (eu sei sobre a função Ackermann, e que ela não é recursiva primitiva, mas ainda é computável. AL1 meu conhecimento sobre isso vem da página da Wikipedia na função Ackermann).
PPS: Se a resposta for sim, você poderia, por exemplo, escrever uma versão iterativa de uma função não primitiva-recursiva. Por exemplo, Ackermann na resposta. Isso vai me ajudar a entender.