close

#include <iostream>

using namespace std;

int Ack(int m, int n)
{
   if (m==0)

  {

          return n+1;//01

  }


   if (n==0&&m>0)

  {

          return Ack(m-1, 1);//02

   }


   return Ack(m-1, Ack(m, n-1));//03

}

 

//上面這個int Ack() function 也一樣遞迴處理
//m, n 代入函數之後,先判斷01是否為真,如果為真,傳回n+1
//如果01為假,用02判斷,如果02判斷為真,傳回Ack(m,n)=Ack(m-1,1)
//如果02為假,那就是一般狀況03,傳回 Ack(m-1, Ack(m, n-1),然後繼續判斷是否繼續無法繼續展開
//如果可以繼續展開,就回到01, 02繼續判斷,無法繼續展開就把所有01結果相加,得到最後的結果。 

void main ()
{

   printf("%d\n",Ack(2,2));//呼叫亞克曼函數

   system("pause");
}

arrow
arrow
    創作者介紹
    創作者 archerdevil 的頭像
    archerdevil

    Archer, who doesn't know how to shoot...

    archerdevil 發表在 痞客邦 留言(0) 人氣()