我可以在球拍中打印列表的替代元素吗? [英] Can I print alternate elements of a list in Racket?
本文介绍了我可以在球拍中打印列表的替代元素吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
例如,如果我创建了一个名为odd-places
的函数,它的工作方式应该如下所示
(odd-places '(p q r s t 1 2)) = (p r t 2)
是否可以使用递归完成此操作?
推荐答案
一个小附录:使用此函数,您可以选择在某个项目再次包含在结果列表中之前,应跳过列表中的多少个项目。
(define (nth-places n lst [i 0])
(cond
[(null? lst) null]
[(= i 0) (cons (car lst)
(nth-places n (cdr lst) (+ i 1)))]
[(= i n) (nth-places n (cdr lst) 0)]
[else (nth-places n (cdr lst) (+ i 1))]))
[i 0]
中的i
是一个可选参数,在调用函数时不必指定,因为在本例中它的起始值设置为0。这里i
用作累加器索引,我们使用它从零开始计数,而不是从一开始计数。
n
定义只应选取所有第n个元素来构建新列表,我们再次从0开始索引。
如果要生成类似于此处的交替元素
(odd-places '(p q r s t 1 2)) = (p r t 2)
您可以调用
(nth-places 1 '(p q r s t 1 2))
每隔三个元素将n设置为2,依此类推。
这篇关于我可以在球拍中打印列表的替代元素吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文