阿克曼函數(Ackermann)是非原始遞歸函數的例子。它需要兩個自然數作為輸入值,輸出一個自然數。它的輸出值增長速度非常快,僅是對於(4,3)的輸出已大得不能准確計算。
\[A(m, n)=\left\{\begin{array}{ll}{n+1} & {m=0} \\ {A(m-1,1)} & {m>0, n=0} \\ {A(m-1, A(m, n-1))} & {m>0, n>0}\end{array}\right. \]
因為\(m\)很小,所以我們可以針對\(0\leq m \leq 3\)來對阿克曼函數進行推導
對於阿克曼函數的具體推導過程如下:
- 當\(m=0\)時:
\[A(0, n)=n+1 \]
- 當\(m=1\)時:
\[\begin{aligned} A(1, n) &=A(0, A(1, n-1))=A(1, n-1)+1 \\ &=A(0, A(1, n-2))=A(1, n-2)+2 \\ &=A(0, n-3)+3 \\ & \cdots \\ &=A(1,0)+n \\ &=A(0,1)+n \\ &=n+2 \end{aligned} \]
- 當\(m=2\)時:
\[\begin{aligned} A(2, n) &=A(1, A(2, n-1))=A(2, n-1)+2 \\ &=A(1, A(2, n-2))+2 \\ &=A(2, n-2)+2 \times 2 \\ & \cdots \\ &=A(2,0)+2 \times n \\ &=A(1,1)+2 \times n \\ &=3+2 \times n \end{aligned} \]
- 當\(m=3\)時:
\[\begin{aligned} A(3, n) &=A(2, A(3, n-1)) \\ &=A(3, n-1) \times 2+3 \\ &=A(2, A(3, n-2)) \times 2+3 \\ &=(A(3, n-2) \times 2+3) \times 2+3 \\ &=2 \times 2 \times A(3, n-2)+2 \times 3+3 \\ &=2 \times 2 \times A(3, n-2)+2 \times 3+3 \\ &=2 \times 2 \times(A(3, n-2)+2 \times 3+3) \\ &=2 \times 2 \times(A(3, n-3) \times 2+3)+2 \times 3+3 \\ &=2^{n} \times A(2,1)+3 \times\left(2^{n}-1\right) \\ &=2^{n} \times 5+2^{n} \times 3-3 \\ &=2^{n+3}-3 \end{aligned} \]