递归理论基础

目录

1,函数依赖

2,部分函数依赖、完全函数依赖

3,合成

4,原始递归

5,非原始递归——阿克曼函数

6,递归

7,严格尾递归


1,函数依赖

函数依赖简单点说就是:某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。

设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X。

2,部分函数依赖、完全函数依赖

设X,Y是关系R的两个属性集合,且存在X→Y,

若存在X’是X的真子集,使得X’→Y,则称Y部分函数依赖于X,

反之,如果不存在这样的X’,则称Y完全函数依赖于X。

3,合成

设 f 是 k 元部分函数,g1、g2、...、gk是 k 个n 元部分函数,令h(x1,...,xn)=f(g1(x1,...,xn),...,gk(x1,...,xn))

称函数h是由 f 和g1,...,gk 合成得到的。

4,原始递归

(1)设 g 是2元全函数,k 是一个常数,函数 h 由下述等式给出

h(0)=k,

h(t+1)=g(t,h(t))

称 h 是由 g 经过原始递归运算得到的。

(2)设 f 和 g 分别是 n 元和 n+2 元全函数, n+1 元函数 h 由下述等式给出

h(x1,...,xn,0)=f(x1,...,xn),

h(x1,...,xn,t+1)=g(t,h(x1,...,xn,t),x1,...,xn)

称 h 是由 f 和 g 经过原始递归运算得到的。

(3)加法、除法、阶乘、指数,找到第 n个素数等等是原始递归的,实际上,很难设计不是原始递归的函数。

5,非原始递归——阿克曼函数

Ackermann function:

unsigned int A(unsigned int m,unsigned int n) {
  if (m==0) { return n+1; }
  else if (n==0) { return A(m-1,1); }
  else { return A(m-1,A(m,n-1)); }
}

6,递归

递归包括原始递归和非原始递归。

原始递归函数可以用总是停机的图灵机计算,而非原始递归函数需要图灵完全系统。

7,严格尾递归

严格的尾递归过程,是指那种使用与形式参数完全对应的实际参数,来进行所有递归调用的尾递归过程。

把递归程序写成严格尾递归,就比较容易转化成非递归写法了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值