我一直看到堆栈溢出,例如here,here,here,here,here以及其他我不愿提及的其他内容,“任何使用递归的程序都可以仅通过迭代转换为程序”。
甚至还有一个非常upvoted 线程具有高度upvoted 答案是肯定的说,这是可能的。
现在我不是说他们错了。只是这个答案抵消了我对计算的微薄知识和理解。
我相信每个迭代功能都可以表示为递归,而维基百科对此有一个陈述。但是,我怀疑相反是真的。首先,我怀疑非原始递归函数是否可以迭代表示。
我也怀疑超级运算是否可以迭代表示。
在对我的问题 @YuvalFIlmus的回答(我不明白)中,他说不可能将任何数学运算序列转换为一系列加法运算。
如果YF的答案确实是正确的(我想是的,但是他的推理超出了我的脑袋),那么这是否意味着并非每个递归都可以转换为迭代?因为如果有可能将每个递归转换为迭代,我将能够将所有操作表示为一系列加法。
我的问题是这样的:
可以将每个递归转换为迭代吗,为什么?
请给一个聪明的高中生一个答案,或者本科一年级的学生会理解。谢谢。
PS我不知道什么是原始递归(我确实知道Ackermann函数,它不是原始递归,但仍然可以计算。我对它的了解也来自Ackermann函数的Wikipedia页面。)
PPS:如果答案是肯定的,例如您可以编写非原始递归函数的迭代版本。例如,答案是Ackermann。它会帮助我理解。