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