0

これは、任意の長さのアトムのリストを唯一の引数として受け取り、隣接する要素を反転してそのリストを返す、Scheme の再帰関数 flip です。つまり、この関数はリストの要素を交互に入れ替えます (つまり、リスト [a1,a2,a3,a4,a5,a6...,an] を引数として指定すると、[a2,a1,a4,a3,a6] が生成されます)。 ,a5,...])。n が奇数の場合、an は結果リストの最後に残ります。補助機能を一切使用していません。

これが私のサンプルです

> (flip '())
()

> (flip '(a))
(a)

> (flip '(a b))
(b a)

> (flip '(a b c d))
(b a d c)

> (flip '(a b c d e))
(b a d c e)
4

2 に答える 2

2

これは宿題なので、はっきりと答えることはできません。ソリューションの一般的な考え方は次のとおりです。空白を埋めます。

(define (flip lst)
  (cond ((null? lst)                   ; The list is empty:
         <???>)                        ; return the empty list.
        ((null? (cdr lst))             ; The list has a single element:
         <???>)                        ; return a list with the single element.
        (else                          ; The list has at least two elements:
         (cons <???>                   ; cons the second element ...
               (cons <???>             ; ... to the first element ...
                     (flip <???>)))))) ; ... and advance two elements at once.
于 2012-09-12T03:19:06.473 に答える
0

(define (flip lst) (cond ((null? lst)
null)
((null? (cdr lst))
lst)
(else
(cons (car (cdr lst))
(cons (car lst)
(flip (cdr (cdr )最初)))))))))

于 2012-09-25T03:16:03.317 に答える