Scheme函数,反向返回列表中的奇数元素

时间:2018-04-09 00:03:06

标签: list recursion scheme reverse

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

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

它必须是一个函数,它不会调用除自身之外的任何函数。它无法调用oddreverse,并且必须具有与调用两者相同的功能。

奇数功能:

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

你的reverse主要做你想要的,除了它的结果中包括偶数元素。

例如,如果您尝试使用(1 2 3 4 5 6 7)撤消reverse,则会进行递归调用以反转列表(2 3 4 5 6 7);如果你可以从那个递归调用中取消2,那么你在这里就会处于良好状态(尽管你必须处理一个边缘情况,你会发现得足够快。)