我必须为我的编程类创建一个递归Scheme函数,它将获取列表中所有奇数编号的元素,然后以相反的顺序返回它们。
我有一个用于反转列表的函数,以及另一个用于获取奇数元素的函数,但是无法弄清楚如何将两者组合成 new 函数,因为它们两者都是递归的。
它必须是一个函数,它不会调用除自身之外的任何函数。它无法调用odd
或reverse
,并且必须具有与调用两者相同的功能。
奇数功能:
(define (odd lst)
(if (null? lst)
'()
(cons (car lst)
(odd (cddr lst)))))
反向功能:
(define (reverse lst)
(if (null? lst)
'()
(append (reverse (cdr lst))
(list (car lst)))))
任何帮助将不胜感激!
答案 0 :(得分:1)
你的reverse
主要做你想要的,除了它的结果中包括偶数元素。
例如,如果您尝试使用(1 2 3 4 5 6 7)
撤消reverse
,则会进行递归调用以反转列表(2 3 4 5 6 7)
;如果你可以从那个递归调用中取消2
,那么你在这里就会处于良好状态(尽管你必须处理一个边缘情况,你会发现得足够快。)