Ackerman函式的棧實現

2022-04-14 17:30:46 字數 1009 閱讀 1047

一、ackerman函式:

ackerman函式的定義如下:

二、ackerman函式的遞迴實現:

利用遞迴來實現ackerman函式是比較簡單的:

1

/*sample input:

20 1

31 145

sample output:62

738*/

910 #include11

using

namespace

std;

1213

int akm(int m, int

n)18

19int

main()

24 }

三、利用棧來實現ackerman函式:我們可以使用棧來模擬遞迴函式的過程,下列**中,使用棧st來儲存每個遞迴函式的引數m,tmp用來儲存每個遞迴函式的返回值:

1

/*sample input:

20 1

31 145

sample output:62

738*/

910 #include11

using

namespace

std;

1213

int akm(int m, int

n)22

else26}

27 tmp = n + 1;28

if(st.empty())break;29

else

33st.pop();34}

3536

return

tmp;37}

3839

intmain()

44 }

//end

「心算「Ackerman函式

cpp view plain copy intack intm,intn else if n 0 else 求ack 2,29 是多少?在筆試現場,不准使用任何編譯工具。你仔細看之後會發現這個迴圈還是很多的!那我們該怎麼辦呢。那肯定就不是每個迴圈都來作,這個時候就要找規律,做推導。我們來看下 ack...

Ackerman的遞迴與非遞迴演算法

已知ackerman函式的定義如下 a km m,n n 1,text akm m 1,1 m neq 0,n 0 akm m 1,akm m,n 1 m neq 0,n neq 0 end akm m,n n 1 akm m 1 1 akm m 1,akm m,n 1 m 0m 0,n 0m 0 ...

棧 棧的實現

棧是一種線性儲存結構,棧中資料是按照 先進後出 方式進出棧,向棧中新增 刪除資料時,只能從棧頂進行操作。include using namespace std template class t class arraystack 建構函式 template class t arraystack arr...