sicp

    1熱度

    2回答

    從SICP 練習2.24:假設我們計算表達式(名單1(列表2(名單3 4)))。給出由解釋器打印的結果,相應的方框和指針結構,以及將其解釋爲樹(如圖2.6所示)。 問題是我的眼睛被破壞了,所以我既沒有看到盒子和指針圖,也沒有看到圖2.6。所以現在我只能猜測這個列表應該看起來像樹一樣: 另一種思考其元素是序列的序列的方法就像樹一樣。序列的元素是樹的分支,本身是序列的元素是子樹。 請檢查我的樹型解釋。

    0熱度

    1回答

    我解決它的PHP,它的工作原理。但我嘗試使用方案,我收到「Aborting !:最大遞歸深度超出」錯誤。我使用MIT/GNU Scheme微代碼15.3 。這裏是代碼。 PHP function cc($a,$b) { if($b==1){ return $a; }elseif($b%2!==0){ return $a+cc($a,$b-1);

    3熱度

    1回答

    此代碼創建一個平衡二叉搜索樹,該樹是兩個平衡二叉搜索樹的交集。 (define (intersection-tree t1 t2) (list->tree (intersection-set (tree->list-2 t1) (tree->list-2 t2)))) 樹形>列表-2變平樹成有序集。它需要Theta(N)。 交集 - 設置兩套用兩個輸入集創建一個新集。它需要Theta

    0熱度

    1回答

    我正在閱讀SICP第3章並且想到了這一點(認爲它是創建整數流的過程整數的變體):如何創建兩個交替值的流?例如,你創建這個: 1 0 1 0 1 0 1 0 ... ,你可以改變的步驟2(或更多),使它看起來像 1 1 0 0 1 1 0 0 1 1 ... 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ...

    0熱度

    1回答

    我遇到的特殊問題是爲question 4.16b of Structure and Interpretation of Computer Programs創建解決方案。這裏的程序需要被創建,轉換 (lambda (a b) (define u 'u) (define v 'v) 'e1)) 分爲: (lambda (a b) (let ((u '*una

    0熱度

    1回答

    我似乎無法解釋的利弊,汽車和CDR這個定義是如何工作的: (define (p-cons x y) (lambda (proc) (proc x y))) (define (p-car proc) (proc (lambda (p q) p))) (define (p-cdr proc) (proc (lambda (p q) q))) 我明白,第一個過程

    1熱度

    2回答

    SICP的Section 1.2.6介紹了費馬素數測試如下的算法(我自己的話): 要測試n是否是素數: 選擇1之間的隨機整數a和n-1包含性地。 如果a^n %n = a,那麼n可能是素數。 我越來越粘在一部分的事實是,我們允許a = 1,因爲在這種情況下,無論我們選擇的n(素與否),測試將永遠傳遞。

    0熱度

    1回答

    我正在尋找一種方法來獲取在雞計劃unix時間,或任何其他時間戳,我可以比較像它是一個數字與其他時間戳。 我想要這個,因爲我試圖模擬(運行時),它在我正在閱讀的書(SICP)中定義爲「開始解釋器以來的時間」,但是因爲我們只是尋找這些差異不同點的郵票,這並不重要。 我可以進入更多的細節,如果有幫助:我試圖做練習1.22。

    1熱度

    1回答

    SICP question 3.25狀態的表: [S]如何如何實施,其中值存儲在密鑰和不同的值的任意數量的一個表可以在不同的存儲鍵的數量。查找並插入!程序應該將用於訪問表的鍵的列表作爲輸入。 這裏的表是一個數據結構,其中可以使用任意數量的鍵來檢索一個值。例如,在 ​​ 下面的代碼應該把符號 '你好密鑰後' A 'B' C: (put (list 'a 'b 'c) 'hello) (get (l

    3熱度

    4回答

    計算機程序的構造和解釋(SICP)3.5.2推出無限流: (define ones (cons-stream 1 ones)) 這個代碼不DrRacket工作,與錯誤: ones: undefined; cannot reference an identifier before its definition 其他這樣的代碼: (define (integers-starting-fr