Scheme 函数 returns 列表中的奇数元素反向

Scheme function that returns the odd-numbered elements from a list in reverse

我必须为我的程序创建一个递归 Scheme 函数 class,它将获取列表中的所有奇数元素,然后 return 它们以相反的顺序排列。

我有一个函数用于反转列表,另一个函数用于获取奇数元素,但无法弄清楚如何将两者组合成一个 new 函数,因为它们都是递归的。

它必须是一个函数,它不调用除自身以外的任何函数。它不能调用 oddreverse,并且它必须具有与调用 both 相同的功能。

奇函数:

(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)))))

如有任何帮助,我们将不胜感激!

您的 reverse 大多数情况下都符合您的要求,除了它在结果中还包含 even-numbered 元素。

例如,如果您尝试用 reverse 反转 (1 2 3 4 5 6 7),它将进行 递归调用 来反转列表 (2 3 4 5 6 7);如果你能让它从 that 递归调用中去掉 2,那么你在这里的状态会很好(尽管你必须处理一个边缘情况你很快就会发现)。