球拍递归变量?

时间:2016-03-04 12:28:33

标签: recursion racket

图。 “如何设计程序”中的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 个答案:

答案 0 :(得分: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}}。