好的,所以我最近发布了一个关于在 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 '())
这将/应该返回一个空列表等。
我想知道是否有人可以告诉我这看起来如何。我正在尝试学习计划以供将来参考,我听说这是一种很酷的编程语言,但截至目前,我在路上遇到了一些困难。对新人的任何帮助将不胜感激。谢谢你