最近又從頭看起《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...