递归 Ackerman函数

当一个函数以及它的一个变量由函数自身定义时,称这个函数为双递归函数———Ackerman函数。

Ackerman函数A(n,m)有两个独立的变量m≥0和n≥0,其定义如下:

A(1,0)=2

A(0,m)=1                                              m≥0

A(n,0)=n+2                                           n≥2

A(n,m)=A(A(n-1,m),m-1)               n,m≥1

A(n,m)的自变量m的每一个值都定义了一个单变量函数。

  1. m=0时,递归式的第三式表示定义了函数“加2”,递增函数A(n,0)=n+2
  2. m=1时,A(1,1)=A(A(0,1),0)=A(0,1)+2 因此A(n,1)=2n    n≥1
  3. m=2时,A(1,2)=A(A(0,2),1)=2A(0,2)  因此A(n,2)=2^n  
  4. m=3时,A(1,3)=A(A(0,3),2)=2^A(0,3) =2    A(2,3)=A(A(1,3),2)=2^A(1,3) =2^2   A(3,3)=A(A(2,3),2)=2^A(2,3)=2^2^2                                             A(n,3)=A(A(n-1,3),2)=2^A(n-1,3)=2^2^2^....^2   (n个2)      
  5. m=4时,增长速度非常快,以至于没有适当的数学式子来表示这一函数
 单变量的Ackerman函数A(n)定义为:A(n)=A(n,n)。其拟逆函数α(n)在算法复杂度中经常遇到。他定义为:α(n)=min{k|A(k)≥n}。

例如,由A(0)=1,A(1)=2,A(2)=4,A(3)=16,A(4)=2^2^2...^2(2的层数为65536)推知α(1)=0,α(2)=1,α(3)=α(4)=2,α(5)=...=α(16)=3。可以看出A(n)增长速度非常快,而拟逆函数α(n)增长速度非常慢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值