请注意,如果您只想使用封闭形式,那么 m
int Tetration(int number, int tetrate)
{
long int product=1;
if(tetrate==0)
return product;
product=number;
while(tetrate>1)
{
product=FastPower(number,product);
tetrate--;
}
return product;
}
然后您可以覆盖最多 n==4 的情况,然后使用递归定义和 A(5,n) 的值以荒谬的速度溢出,因此实际上无需担心。虽然你的老师可能不会满意这样的算法,但它会运行得更快。在我的一门离散课程中,当我要求编写一个算法来计算斐波那契数然后找到其 O(n) 时,我编写了封闭形式,然后编写了 O(1) 并获得了满分,一些教授欣赏聪明的答案。
关于阿克曼函数,需要注意的是,它本质上定义了整数上加法函数的层次结构,A(1,n) 是加法,A(2,n) 是乘法,A(3,n) 是求幂,A (4,n) 是四次迭代,5 之后函数增长太快而不太适用。
另一种看待加法、乘法等的方法是:
Φ0 (x, y ) = y + 1
Φ1 (x, y ) = +(x, y )
Φ2 (x, y ) = ×(x, y )
Φ3 (x, y ) = ↑ (x, y )
Φ4 (x, y ) = ↑↑ (x, y )
= Φ4 (x, 0) = 1 if y = 0
= Φ4 (x, y + 1) = Φ3 (x, Φ4 (x, y )) for y > 0
(使用前缀表示法,即 +(x,y)=x+y,(x,y)=xy.