さて、私は最近、以下の定義済みリストから呼び出される関数を生成する再帰関数をSchemeで作成することに関する質問を投稿しました:
(define list0 (list 'j 'k 'l 'm 'n 'o 'j) )
(define list1 (list 'a 'b 'c 'd 'e 'f 'g) )
(define list2 (list 's 't 'u 'v 'w 'x 'y 'z) )
(define list3 (list 'j 'k 'l 'm 'l 'k 'j) )
(define list4 (list 'n 'o 'p 'q 'q 'p 'o 'n) )
(define list5 '((a b) c (d e d) c (a b) )
(define list6 '((h i) (j k) l (m n)) )
(define list7 (f (a b) c (d e d) (b a) f) )
私の偶数関数のために、私はこの再帰関数を作成しました:
(define mylist '(1 2 3 4 5 6 7))
(define (evens lst)
(define (do-evens lst odd)
(if (null? lst)
lst
(if odd
(do-evens (cdr lst) #f)
(cons (car lst) (do-evens (cdr lst) #t)))))
(do-evens lst #t))
しかし今、私はそのようなことをする「oddrev」関数を作成しようとしています: (oddrev 1st) これは、1st から取得した奇数番号の要素から形成された新しいリストを返す必要がありますが、元の順序とは逆です。それは私が入力した場合です:
(oddrev '(a b c d e f g))
返される/返す必要がある: (geca)
(oddrev (LIST 's 't 'u 'v 'w 'x 'y 'z))
返される/返す必要がある: (ywus)
(oddrev '((h i) (j k) l (m n)))
返される/返す必要がある:
(l (h i))
と
(oddrev '())
空のリストなどを返す/返すべきです。
誰かがこれがどのように見えるかを教えてくれるかどうか疑問に思っています. 私は将来の参考のためにスキームを学ぼうとしており、それはクールなプログラミング言語だと聞いていますが、今のところ、いくつかの困難にぶつかっています。新しい人への助けをいただければ幸いです。ありがとうございました