【发布时间】:2019-10-07 08:37:49
【问题描述】:
我有两个 Racket 编程作业问题:
第一个:写一个函数kth-item,它有两个参数,第一个是流s,第二个是数字k,它产生从流中提取k个元素的结果,只返回最后一个元素.与前一个非常相似,但只返回一个元素。你可以假设 k 大于 0。
第二个:写一个流 negate-2-and-5,它类似于自然数流(即 1, 2, 3, ...),除了可被 2 或 5 整除的数字被取反(即, 1, -2, 3, -4, -5, -6, 7, -8, 9, -10, 11, -12, 13, -14, ...)。请记住,流是一个 thunk,当被调用时会产生一对,其中对的 car 是下一个数字,而 cdr 将是流的延续。
对于第一个问题,我知道如何获取 ith 的列表,但我不知道如何继续获取最后一个元素。
对于第二个问题,我知道如何获得 2 或 5 个作品,但我不知道如何组合它们,因此 2 和 5 可以同时工作。
(define (next-k-items s k)
(if (<= k 0)
empty
(cons (car (s))
(next-k-items (cdr (s)) (- k 1)))))
(define (negate-2-and-5)
(define (f x) (cons (if (= 0 (remainder x 5)) (- x) x)
(lambda () (f (+ x 1)))))
(f 1))
这里是测试代码:
(check-expect (kth-item nats 3) 3)
(check-expect (next-k-items negate-2-and-5 7) '(1 -2 3 -4 -5 -6 7))
【问题讨论】: