递归定义

来自testwiki
imported>Mhss2025年1月24日 (五) 04:40的版本 递归定义的原理
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索
构造科赫曲线的前四个步骤,科赫曲线和很多分形一样,是用递归定义的

递归定义数理逻辑计算机科学用到的一种定义方式,使用被定义对象的自身来为其下定义(简单说就是自我复制的定义)。递归定义与归纳定义类似,但也有不同之处。递归定义中使用被定义对象自身来定义,而归纳定义是使用被定义对象的已经定义的部分来定义尚未定义的部分。不过,使用递归定义的函数或集合,它们的性质可以用数学归纳法,通过递归定义的内容来证明。

定义方式

大部分的递归定义都由三个部分构成:基本情况的定义,递归法则和递归结束的情况。如果定义的对象是无限的,那么可以省略第三个部分(递归结束的情况)。比如说,可以用递归定义的方式来定义如下的一个自然数集上的函数f

f(0)=1
n>0,f(n)=n×f(n1).

这个定义在逻辑上是成立的,因为它首先定义了f在最小的自然数0上的取值,接下来对每个大于零的自然数n,只要重复有限多次定义的过程,最终就会回到对0的定义上。这样定义出的函数f就是阶乘函数。

递归定义和循环定义的不同之处在于,后者不包括对基本情况的定义。比如定义建立在整数集上的函数g

n,g(n)=g(n1)+1,

则我们永远无法确定g的取值,这便是循环定义。

递归定义的原理

基于递归定理,设A是一个集合,并且设a0A的一个元素;如果有函数ρ:fiak,为每个映射整数集的非空子集至A的函数fi,指派A的一个元素ak,那么存在一个唯一的函数h:+A使得:

h(1)=a0h(i)=ρ(h|{1,2,,i1}) for i>1

这里的f|A表示将f限制A

参考

  • P. Aczel (1977), "An introduction to inductive definitions", Handbook of Mathematical Logic, J. Barwise (ed.), ISBN 0-444-86388-5
  • James L. Hein (2009), Discrete Structures, Logic, and Computability. ISBN 0-7637-7206-2