Questions tagged «recursion»

4
关于自己的源代码的程序推理
这个问题的灵感来自以下(模糊的)问题:拥有可以推理并修改其源代码的AI的编程语言/逻辑基础是什么? 这一点都不严格,因此这是我尝试从中提取一个具体的问题。我对两件事感兴趣: (A)可以将自己的程序表示和操纵为数据类型程序(例如,AST)的编程语言P。(如果需要,可以将类型为Program的对象转换为String,即该语言的有效程序的文本。这与编译器的操作相反。) (B)一种推理语言P程序的功能的方法。我正在考虑以下两个层次: 另一种语言Q(具有定理证明功能)可对P程序的功能进行建模。它应该能够表达和证明诸如“运行程序p的结果为foo”之类的语句。 推理程序p:Program 用语言P本身做什么的一种方式。(因此,我们将P = Q视为上述值。) 在何种程度上实施了类似的措施,或者在这个方向上取得了什么进展?实际的障碍是什么?根据问题的初衷,使问题形式化的最佳方法是什么? * 正如答案所显示的(谢谢!),(A)和(B1)可以分别完成,尽管似乎将它们一起执行更多是研究问题。 这是我对这个问题的一些初步想法(警告:相当模糊)。另请参阅我对Martin Berger答案的评论。 我对编程语言建模相同的编程语言感兴趣,而不是对一种更简单的编程语言(因此上面的P = Q)感兴趣。这将是程序能够“了解其自身源代码”的“概念证明”。相依类型的编程语言可以保证其功能的输出,但这不算是“关心自己的源代码”,而不仅仅是“ Hello world!”。会被视为一种会自动打印出裸露的字符串的语言中的quine-需要某种引用/自引用。这里的类似物具有表示Program的数据类型。 这似乎是一个相当大的项目-语言越简单,表达其中的所有内容就越困难;语言越复杂,就需要进行更多的建模工作。 按照递归定理的精神,程序可以“获取”其自己的源代码并对其进行修改(即,输出其自身的修改版本)。(B2)然后告诉我们该程序应该能够对修改后的程序表示保证(这应该能够递归,即它应该能够对将来的所有修改内容进行表达?)。


1
解决递归
如何解决以下重复关系? F(n )= f(n − 1 )+ f(ñ - 日志n )f(n)=f(n−1)+f(n−log⁡n) f(n) = f(n-1) + f(n - \log n)
12 recursion 

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)如果该理论真的存在,那么为什么我会发现例如简化预订购的迭代,而使后订购如此困难呢?(除了我的智力有限)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.