阿克曼函數推導過程(m<=3)

阿克曼函數(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} $$
相關文章
相關標籤/搜索