我正在尝试创建一个函数(last),它接受一个函数(f)和一个列表作为参数列表被传递给函数(odd?)如果列表中的最后一个元素是奇数,则返回true(#t),否则返回false(#f)。

(define (last f L)
(if (null? L) '() ( last f (cdr L)) ))

(最后一个单数?“(0 5 3 8 6 7))

最佳答案

以下是如何使用内置函数编写一个解决方案,注意将一个过程传递为参数的正确语法,并且意识到将函数命名为last是一个坏主意,它与现有的程序冲突,你应该用同样的方法来解决这个问题!

(define (my-last f L)
  (f (last L)))

如果必须从头开始编写函数,请确保您了解需要哪些基本情况:
(define (my-last f L)
  (cond ((null? L) #f)
        ((null? (cdr L)) (f (car L)))
        (else (my-last f (cdr L)))))

无论哪种方式,它都按预期工作:
(my-last odd? '(0 5 3 8 6 7))
=> #t

10-05 20:31
查看更多