2017-03-17 60 views
0

編寫一個Scheme函數,該函數返回給定整數列表中的偶數列表。該列表可能並不簡單,可能會出現嵌套列表,您需要查找偶數這些數字。使用編寫一個返回偶數列表的方案

(DEFINE(evenlist numberlist) 此作爲一個機構和獲取結果某事像這樣 (DEFINE(evenlist numberlist) 結果:(2 4 6 4)

(define (evenlist numberlist) 
    (cond 
    ((null? numberlist) '()) 
    (else(not (= 0 (modulo (numberlist) 2))(evenlist(car numberlist)))) 
    )) 

這是我已經完成了,我是新來的lisp,所以不要怪我:(

+0

你到目前爲止嘗試過什麼?請註明您的方案實施情況,指出您遇到問題的部分 –

+0

(define(evenlist numberlist) (cond ((null?numberlist)'()) (else(not(= 0(modulo(numberlist)2 ))(evenlist(car numberlist)))) ))試過這個,但沒有工作 – Priba101

+0

請編輯該問題並添加代碼,而不是作爲評論 –

回答

1

如果輸入列表是一個任意嵌套的列表列表,那麼你必須做更多的工作。 :空列表,非列表或列表列表),加上額外的邏輯來平滑結果(即'爲什麼append在這裏使用):

(define (evenlist numberlist) 
    (cond ((null? numberlist) '()) 
     ((not (pair? numberlist)) 
     (if (even? numberlist) (list numberlist) '())) 
     (else 
     (append (evenlist (car numberlist)) 
       (evenlist (cdr numberlist)))))) 
+0

好吧,但在此之前,我需要定義pair函數,因爲它將其輸出爲錯誤 – Priba101

+0

'pair?'是Scheme原語,它應該是您的解釋器的一部分。嘗試更改爲另一種更高級的語言 - 或者查看是否在您的方案中定義了「list?」或其他等效內容,並將其替換。 –

+0

我們的老師告訴我們,我們只能使用中級語言,我改變了一對?陷入缺點?並輸出(列表2 4)。我認爲這是正確的 – Priba101