1

私は、演習 2.18 のコンピュータ プログラムの構造と解釈で忙しいです。ここでは、リストを逆順にする手続き reverse を定義する必要があります。次のことを行う必要があります。

(reverse (list 1 4 9 16 25))
;; => (25 16 9 4 1)

私は次の定義を思いついた:

(define (reverse list)
  (if (null? list) 
      list
      (cons (reverse (cdr list)) (car list))))
;; => (mcons (mcons (mcons (mcons (mcons '() 25) 16) 9) 4) 1).

次に、ソリューションで次のようなものが見つかりました。

(define (reverse items) 
  (if (null? (cdr items)) 
      items 
      (append (reverse (cdr items)) 
              (cons (car items) nil))))
;; => (mcons 25 (mcons 16 (mcons 9 (mcons 4 (mcons 1 '()))))).

appendこことconsここは指が触れないくらい違います。

私の質問: 違いは何ですか? 結果が として表示されないのはなぜ(25 16 9 4 1)ですか?

4

1 に答える 1