6
消除递归-幕后理论研究
我是这个网站的新手,这个问题肯定不是研究水平-很好。我在软件工程方面有一点背景,但是在CSTheory中几乎没有背景,但是我觉得它很有吸引力。长话短说,如果这个问题在本网站上可以接受,我想对以下内容提供更详细的答案。 因此,我知道每个递归程序都有一个迭代模拟,并且通过维护类似于“系统堆栈”的内容并推送环境设置(如返回地址等),我有点理解为它提供的流行解释。 。 更具体一点,我想(正式地)看看如果您有一个函数调用链如何证明这一说法。此外,如果存在一些可能导致调用某些条件语句该怎么?也就是说,潜在函数调用图具有一些紧密连接的组件。F i F jF0→F1个… F一世→ F我+ 1… Fñ→F0F0→F1个…F一世→F一世+1个…Fñ→F0F_0 \rightarrow F_1 \ldots F_i \rightarrow F_{i+1} \ldots F_n \rightarrow F_0F一世F一世F_iFĴFĴF_j 我想知道如何让我们说一些递归的迭代转换器来处理这些情况。我前面提到的手工波浪形说明是否真的足以解决这个问题?我的意思是为什么在某些情况下删除递归很容易。特别是从二叉树的遍历遍历中删除递归确实很容易-这是一个标准的面试问题,但是对后继订单而言,删除递归一直是我的噩梦。 我真正要问的是问题222 (1)确实有更正式(令人信服的)证明可以将递归转换为迭代吗? (2)如果该理论真的存在,那么为什么我会发现例如简化预订购的迭代,而使后订购如此困难呢?(除了我的智力有限)