【问题标题】:Racket define list球拍定义列表
【发布时间】:2019-10-29 10:07:15
【问题描述】:

我必须使用语言 Racket 来解决嵌套任务。通过给定的列表,我必须创建新列表,其中仅包含除以 10 没有剩余的元素。

到目前为止我的代码:

(define (brel x sp)
   (cond ((null? sp) 0)
         (( = (remainder (car sp) 10) 0) (car sp))
         (else (brel x (cdr sp)))))

(define (spbr L)
  (define (f l1)
    (if (null? l1) '()
     (cons (brel (car l1) L) (f (cdr l1)))))
 (f L))
(spbr (list 50 5 3))

给代码当前计算第一个列表中元素的每次重复并将它们添加到新列表中。我必须进行哪些更改才能使其正常工作?

【问题讨论】:

  • 你能解释一下“嵌套任务”是什么意思吗?
  • 新列表。没有新任务

标签: functional-programming scheme racket


【解决方案1】:

您不需要辅助程序,只需构建一个仅包含满足条件的项目的新列表:

(define (spbr L)
  (cond ((null? L) '())
        ((= (remainder (car L) 10) 0)
         (cons (car L) (spbr (cdr L))))
        (else
         (spbr (cdr L)))))

使用filter 过程会更惯用:

(define (spbr L)
  (filter (lambda (e) (zero? (remainder e 10)))
          L))

无论哪种方式,它都按预期工作:

(spbr '(50 5 3 70))
=> '(50 70)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2013-04-19
    • 2019-10-27
    • 2017-02-03
    相关资源
    最近更新 更多