族谱网 头条 人物百科

递归

2020-10-16
出处:族谱网
作者:阿族小谱
浏览:472
转发:0
评论:0
语言例子从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”一只狗来到厨房,偷走一小块面包。厨子举起杓子,把那只狗打死了。于是所有的狗都跑来了,给那只狗掘了一个坟墓,还在墓碑上刻了墓志铭,让未来的狗可以看到:“一只狗来到厨房,偷走一小块面包。厨子举起杓子,把那只狗打死了。于是所有的狗都跑来了,给那只狗掘了一个坟墓,还在墓碑上刻了墓志铭,让未来的狗可以看到:‘一只狗来到厨房,偷走一小块面包。厨子举起杓子,把那只狗打死了。于是所有的狗都跑来了,给那只狗掘了一个坟墓,还在墓碑上刻了墓志铭,让未来的狗可以看到……’”正式定义在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他...

语言例子

从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”

一只狗来到厨房,偷走一小块面包。厨子举起杓子,把那只狗打死了。于是所有的狗都跑来了,给那只狗掘了一个坟墓,还在墓碑上刻了墓志铭,让未来的狗可以看到:“一只狗来到厨房,偷走一小块面包。厨子举起杓子,把那只狗打死了。于是所有的狗都跑来了,给那只狗掘了一个坟墓,还在墓碑上刻了墓志铭,让未来的狗可以看到:‘一只狗来到厨房,偷走一小块面包。厨子举起杓子,把那只狗打死了。于是所有的狗都跑来了,给那只狗掘了一个坟墓,还在墓碑上刻了墓志铭,让未来的狗可以看到……’”

正式定义

在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他所有情况都能被还原为其基本情况。

例如,下列为某人祖先的递归定义:

某人的双亲是他的祖先(基本情况)。

某人祖先的双亲同样是某人的祖先(递归步骤)。

斐波那契数列是典型的递归案例:

F 0 = 0 {\displaystyle F_{0}=0} (初始值)

F 1 = 1 {\displaystyle F_{1}=1} (初始值)

对所有大于1的整数n: F n = F n − − --> 1 + F n − − --> 2 {\displaystyle F_{n}=F_{n-1}+F_{n-2}} (递归定义)

尽管有许多数学函数均可以递归表示,但在实际应用中,递归定义的高开销往往会让人望而却步。例如:

0 ! = 1 {\displaystyle 0!=1} (初始值)

对所有大于0的整数n: n ! = n × × --> ( n − − --> 1 ) ! {\displaystyle n!=n\times (n-1)!} (递归定义)

一种便于理解的心理模型,是认为递归定义对对象的定义是按照“先前定义的”同类对象来定义的。例如:你怎样才能移动100个箱子?答案:你首先移动一个箱子,并记下它移动到的位置,然后再去解决较小的问题:你怎样才能移动99个箱子?最终,你的问题将变为怎样移动一个箱子,而这是你已经知道该怎么做的。

如此的定义在数学中十分常见。例如,集合论对自然数的正式定义是:1是一个自然数,每个自然数都有一个后继,这一个后继也是自然数。

以下是另一个可能更有利于理解递归过程的解释:

我们已经完成了吗?如果完成了,返回结果。如果没有这样的 终止条件 ,递归将会永远地继续下去。

如果没有,则 简化 问题,解决较容易的问题,并将结果组装成原始问题的解决办法。然后返回该解决办法。

这样就有一种更有趣的描述:“为了理解递归,则必须首先理解递归。”或者更准确地,按照 安德鲁·普洛特金 ( 英语 : Andrew Plotkin ) 的解释:“如果你已经知道了什么是递归,只需记住答案。否则,找一个比你更接近侯世达的人;然后让他/她来告诉你什么是递归。”

数学中常见的以递归形式定义的案例参见函数、集合以及分形等。

计算机科学之应用

递归经常被用于解决计算机科学的问题。在一些编程语言(如Scheme、Haskell中),递归是进行循环的一种方法。

举例: 编写一个程序使用递归求n的阶乘

fac0=1facn=n*fac(n-1)main=print(fac10)

数学之应用

递归

谢尔宾斯基三角形-由封闭递归的三角形所形成之碎形

递归定义集

实例:自然数

关于递归定义集的经范型例,可通过自然数来说明

The canonical example of a recursively defined set is given by the natural numbers:

实例:可导出的命题集合

另一个有趣示例为,公理系统中,所有可导出命题之集合

若一个命题为公理,则其为可导出之命题

通过推理规则方式,若一个命题可以从可导出之命题所推论,则其为可导出之命题

满足上述条件之最小集合,为可导出之命题之集合

此集合称为,可导出之命题之集合,因为在数学基础方法中,依非创建性法构建的命题之集合,可能大于由公理系统及推理规则所递归构建出之集合,详细请参见哥德尔不完备定理

有限次分区法

有限次分区法为几何形式之递归,可用以创建类碎形之图案。次分区原则的运作如后所述,从多个已被有限个标签标注的多边形开始,接着每个多边形仅根据其标签,继续细切到更小的多边形,此一细切的过程可不断重复。

参见

分形

差分

递归关系式

塔珀自指公式



免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱
发表评论
写好了,提交
{{item.label}}
{{commentTotal}}条评论
{{item.userName}}
发布时间:{{item.time}}
{{item.content}}
回复
举报
点击加载更多
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回

更多文章

更多精彩文章
打赏
私信

推荐阅读

· 递归
递归程序在支持自调用的编程语言中,递归可以通过简单的函数调用来完成,如计算阶乘的程序在数学上可以定义为:这一程序在Scheme语言中可以写作:(define(factorialn)(if(=n0)1(*n(factorial(-n1)))))不动点组合子即使一个编程语言不支持自调用,如果在这语言中函数是第一类对象(即可以在运行期创建并作为变量处理),递归可以通过不动点组合子(英语:Fixed-pointcombinator)来产生。以下Scheme程序没有用到自调用,但是利用了一个叫做Z算子(英语:Zcombinator)的不动点组合子,因此同样能达到递归的目的。(defineZ(lambda(f)((lambda(recur)(f(lambdaarg(apply(recurrecur)arg))))(lambda(recur)(f(lambdaarg(apply(recurrecur)a...
· 递归论
概述:计算的概念递归论所考虑的基本问题是,给定一个从自然数到自然数的函数f,f是否是可以被计算的。“可以被计算”,我们先将其当作一个直观的概念。根据直觉,人们一般会认为,一个函数可以被计算是存在一个给定的过程,接受一个自然数n后,该过程进行一定的操作并给出f(n)作为输出。将计算这一直观的概念上升到数学层面的形式化定义这一工作是递归论的根本,并由哥德尔、邱奇、图灵、克莱尼和EmilPost等人在1930年代奠定。他们将图灵可计算性作为有效计算的形式化。在递归论的基本概念被给定之后,一方面人们将该观念应用于数学中,从而证明了一系列自然的问题,如字问题,以及希尔伯特第十问题等问题是不可计算的。另一方面,理论家们进一步拓展,开始了相对可计算性,图灵度等问题的研究。如今,递归论仍是数理逻辑中活跃的领域。历史递归论理论起源自哥德尔、邱奇、图灵、克莱尼和EmilPost在1930年代的工作。他们获得的...
· 递归语言
定义递归语言有两种等价的主要定义:递归语言是在形式语言的字母表上的所有可能的字的集合的递归子集。设S⊆Σ是一个语言,M是一台图灵机,若对于任何字符串ω∈Σ,有ω∈S当且仅当M接受ωω∉S当且仅当M拒绝ω则称M判定语言S。若存在这样的M,S就称为图灵可判定语言。闭包性质递归语言是在下列运算下是闭合的。就是说,如果L和P是两个递归语言,则下列语言也是递归的:L的Kleene星号L∗∗-->{\displaystyleL^{*}}L的非删除(non-erasing)同态φ(L)L和P的串接L∘∘-->P{\displaystyleL\circP}并集L∪∪-->P{\displaystyleL\cupP}交集L∩∩-->P{\displaystyleL\capP}L的补集LC{\displaystyleL^{C}\,}差集L−−-->P{\displaystyleL-P\,}图灵可判定语言与图灵...
· 递归可枚举语言
形式定义递归可枚举语言定义:设S⊆Σ为一个语言,E是一个枚举器,若L(E)=S,则称E枚举了语言S。若存在这样的E,S就称为递归可枚举语言。注意,枚举器E可以以任意的顺序枚举语言L(E),而且L(E)中的某个串可能会被E多次重复地打印。图灵可识别语言定义:设M{\displaystyleM}是一台图灵机,若在输入串ωω-->{\displaystyle\omega}上M{\displaystyleM}运行后可进入接受状态并停机,则称M{\displaystyleM}接受串ωω-->{\displaystyle\omega}。M{\displaystyleM}所接受的所有字符串的集合称为M{\displaystyleM}所识别的语言,简称M{\displaystyleM}的语言,记作L(M){\displaystyleL(M)}。设S⊆⊆-->ΣΣ-->∗∗-->{\displaystyle...
· 原始递归函数
定义原始递归函数接受自然数或自然数的元组作为参数并生成自然数。接受n个参数的函数叫做n-元函数。基本原始递归函数用如下公理给出:常数函数:0元常数函数0是原始递归的。后继函数:1元后继函数S,它接受一个参数并返回皮亚诺公理给出的后继数,是原始递归的。投影函数:对于所有n≥1和每个1≤i≤n的i,n元投影函数Pi,它接受n个参数并返回它们中的第i个参数,是原始递归的。更加复杂的递归函数可以通过应用下列公理给出的运算来获得:复合:给定k元原始递归函数f,和k个m元原始递归函数g1,...,gk,f和g1,...,gk的复合,也就是m元函数h(x1,...,xm)=f(g1(x1,...,xm),...,gk(x1,...,xm)),是原始递归的。原始递归:给定k元原始递归函数f,和k+2元原始递归函数g,定义为f和g的原始递归的k+1元函数,也就是函数h这里的h(0,x1,...,xk)=f(...

关于我们

关注族谱网 微信公众号,每日及时查看相关推荐,订阅互动等。

APP下载

下载族谱APP 微信公众号,每日及时查看
扫一扫添加客服微信