2016-03-04 160 views
0

圖65中的「程序設計方法」如下:球拍遞歸變量? 。

; Nelon -> Number 
; determines the smallest number on l 
(define (inf l) 
    (cond 
    [(empty? (rest l)) (first l)] 
    [else 
    (local ((define smallest-in-rest (inf (rest l)))) 
     (cond 
     [(< (first l) smallest-in-rest) (first l)] 
     [else smallest-in-rest]))])) 

有人可以解釋如何變量最小,在休息的作品。我得到遞歸的功能,但一個變量我困惑

回答

1

這只是以下的簡寫(手寫;-)):

(let ((smallest-in-rest (inf (rest l)))) 
    (cond 
    [(< (first l) smallest-in-rest) (first l)] 
    [else smallest-in-rest])) 

let應該說清楚,我們只是存儲結果爲(inf (rest l)),因此只需在代碼中寫入一次,而不是在cond的每個分支中寫入一次。

+1

不知道爲什麼球拍會這麼長時間教學生的東西完全不同於他們的主要語言。這就像教他們第一次教Python一樣。 – Sylwester

+3

HtDP課程[不是關於學習Racket(或任何語言)](http://www.ccs.neu.edu/home/matthias/HtDP2e/part_preface.html# %28part ._。Dr.Racket_and_the_.Teaching_.Languages%29)。正如本書的第一行所言,任何白癡都可以在幾天內找到任何語言。 HtDP教授如何編程,這是一項艱鉅的任務。它使用一系列簡化的初學者語言來實現這一目標,它允許學生專注於重要的內容,而不是語法的特質(認爲'public static void main')。 – stchang

+4

作爲首先學習'local''的人,在'let'上對我更有意義,因爲我們可以重複使用相同的語法來定義我們已經學過的定義。我們花費更少的時間以這種方式學習語法。 –