国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[SICP][1.10]Ackermann函數

2019-11-08 19:31:28
字體:
來源:轉載
供稿:網友

先上維基百科: 維基百科:阿克曼函數

http://zh.wikipedia.org/wiki/%E9%98%BF%E5%85%8B%E6%9B%BC%E5%87%BD%E6%95%B8

阿克曼函數是非原始遞歸函數的例子;它需要兩個自然數作為輸入值,輸出一個自然數。它的輸出值增長速度非常高,僅是(4,3)的輸出已大得不能準確計算。

1920年代后期,數學家大衛·希爾伯特的學生Gabriel Sudan和威廉·阿克曼,當時正研究計算的基礎。Sudan發明了一個遞歸卻非原始遞歸的Sudan函數。1928年,阿克曼又獨立想出了另一個遞歸卻非原始遞歸的函數。他最初的念頭是一個三個變量的函數A(m,n,p),使用康威鏈式箭號表示法是m→n→p。阿克曼證明了它是遞歸函數。希爾伯特在On the Infinite猜想這個函數不是原始遞歸。阿克曼在On Hilbert’s Construction of the Real Numbers證明了這點。后來Rozsa Peter和Raphael Robinson定義了一個類似的函數,但只用兩個變量。

已知Ackerman函數akm(m,n)定義如下: 當m=0時: akm(m,n) = n + 1; 當m!=0, n=0時: akm(m,n) = akm(m-1, 1); 當m!=0, n!=0時: akm(m,n) = akm(m-1, akm(m, n-1));

Scheme 實現如下:

(define (A x y) (cond ((= y 0) 0) ((= x 0) (* 2 y)) ((= y 1) 2) (else (A (- x 1 ) (A x (- y 1))))))

運行結果如下: 這里寫圖片描述 計算(A 4 3)的時候 程序就已經死了。只有中斷。

當計算(A 1 10)時過程如下: (A 1 10) (A 0 (A 1 9)) (A 0 (A 0 (A 1 8) ………… (A 0(A 0(A 0(A 0(A 0(A 0(A 0(A 0(A 0(A 0 1)))))))))) (A 0(A 0(A 0(A 0(A 0(A 0(A 0(A 0(A 0 2))))))))) (A 0(A 0(A 0(A 0(A 0(A 0(A 0(A 0 4)))))))) …………. (A 0 2^9) 2^10 = 1024 此過程中調用了 A 十次。 當計算(A 2 4)時計算過程如下: (A 2 4) (A 1 (A 2 3)) (A 1 (A 1 (A 2 2))) (A 1 (A 1 (A 1 (A 2 1)))) (A 1 (A 1 (A 1 2))) (A 1 (A 1 (A 0 (A 1 1)))) (A 1 (A 1 (A 0 2))) (A 1 (A 1 4)) ……4次調用 (A 1 16) ……16次調用 2 ^16 = 65536 經過了20次調用

(A 3 3) (A 2 (A 3 2)) (A 2 (A 2 (A 3 1))) (A 2 (A 2 2)) (A 2(A 1 (A 2 1))) …… (A 2 4) …… 2 ^16 up主已經無法計算調用了多少次這個函數類了 - -

所以最后結論可以做出來了:

(define ( f n) (A 0 n)) 計算的是 2n (define (g n) (A 1 n)) 計算的是2^n (define (h n) (A 2 n)) 計算的是((….(((2^2)^2)^2)….)^2) n層嵌套。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 惠东县| 忻州市| 格尔木市| 京山县| 万州区| 青阳县| 阿勒泰市| 京山县| 康定县| 锦州市| 井研县| 拉萨市| 凉山| 崇信县| 兴业县| 叶城县| 崇礼县| 民权县| 洛阳市| 屏南县| 龙海市| 泌阳县| 沂水县| 哈尔滨市| 双城市| 馆陶县| 游戏| 湄潭县| 黄平县| 南澳县| 新竹市| 岱山县| 遂宁市| 晋中市| 泸州市| 新竹市| 河曲县| 镇原县| 叙永县| 特克斯县| 湖北省|