Ackermann函式的個人理解

2021-08-21 18:14:07 字數 652 閱讀 8342

最近又從頭看起《sicp》,其中一道練習(1.10)裡提到了ackermann函式,但定義似乎有些不同。

lang=scheme

(define (a x y)

(cond ((= y 0) 0)

((= x 0) (* 2 y))

((= y 1) 2)

(else (a (- x 1)

(a x (- y 1))))))

(lisp括號真的多)

簡單來說就是乙個函式a(x,y),y=0時值為0,y=1時值為2,x=0時值為2*y,其他情況下等於a(x-1,a(x,y-1))。

a(x,y)

x\y01

234n(n>0)00

2468

2*n102

48162^n20

24162^16

2^...^2(n個2)30

242^16

2^...^2(2^16個2)

a(3,n)的描述有點難寫,我敘述為:從n=2開始,算得2^...^2(共a(3,n-1)個2)作為a(3,n)。

很容易看出,a(x,y)的值受a(x,y-1)和a(x-1,n)影響,將a(x,y-1)的值代入a(x-1,n)中即得到a(x,y)。

就先想到這兒吧,吃飯了。

強大的ackermann函式

演算法老師給我們布置的兩道題拖了幾天了,今天決定搞定它們。其中有一道就是 計算ackermann函式ack m,n 的遞迴計算函式。對於m 0,n 0,ack m,n 定義為 ack 0,n n 1 ack m,0 ack m 1,1 ack m,n ack m 1,ack m,n 1 對著題目看了...

Ackermann函式的遞迴與非遞迴演算法

折騰了我將近一周了,沒查到能實際應用的程式 只好自己魔改 ifndef pch h define pch h 科普 阿克曼函式 ackermann 0,n n 1 ackermann 1,n n 2 ackermann 2,n 2 n 3 ackermann 3,n 2 n 3 3 include ...

關於Java nofity wait的個人理解

首先notify,wait的經典場景是生產者,消費者模型 importorg.slf4j.logger created by wcl on 17 9 17.public classconsumerimplementsrunnable public voidrun 消費 1,當前數量 name,con...