2013-10-03 34 views

回答

0

有有一對夫婦在解決方案中的錯誤:

  • 在第二個條件,你忘了cons當前值 - 記住,我們遞歸構建列表作爲答案,我們必須使用cons這樣做
  • 第二個和第三個條件應該使用0而不是1。否則,當n等於零
  • 基本情況,當n等於零,應返回空列表的過程將失敗 - 否則輸出列表不會被正確構造

有了上述所有修復,該過程將工作:

(define (grab x n) 
    (cond 
    [(< (len x) n) x] 
    [(> n 0) (cons (car x) (grab (cdr x) (- n 1)))] 
    [(= n 0) '()])) 

作爲一個側面說明,你基本上實現take程序,如果這是你的解釋提供(除take將引發一個錯誤,如果n是格雷亞與列表長度相比):

(take '(1 2 3 4 5) 3) 
=> '(1 2 3) 
相關問題