Scheme 按列表的编号重复列表中的值';s值
完成方案程序(重复大量lst),该程序接收非负整数列表 gers并返回一个列表,该列表按顺序包含每个值,每个值表示的次数等于其 值。请参阅下面的示例。您可以在解决方案中使用reverse。您也可以使用helper pro 请在您的解决方案和本页背面添加图标以获得更多空间Scheme 按列表的编号重复列表中的值';s值,scheme,mit-scheme,Scheme,Mit Scheme,完成方案程序(重复大量lst),该程序接收非负整数列表 gers并返回一个列表,该列表按顺序包含每个值,每个值表示的次数等于其 值。请参阅下面的示例。您可以在解决方案中使用reverse。您也可以使用helper pro 请在您的解决方案和本页背面添加图标以获得更多空间 注意:这不是家庭作业。这是一个练习题,我就是找不到答案我会给你一些提示,让你自己解决这个练习题,填补空白。您可以做的第一件可能也是最有用的事情是将问题分为两个过程。第一个,给定一个数字n,负责生成一个重复n的i列表: (defi
注意:这不是家庭作业。这是一个练习题,我就是找不到答案我会给你一些提示,让你自己解决这个练习题,填补空白。您可以做的第一件可能也是最有用的事情是将问题分为两个过程。第一个,给定一个数字
n
,负责生成一个重复n
的i
列表:
(define (repeat n i)
(if (zero? i) ; if no more repeats are needed
<???> ; return the empty list
(cons <???> ; else cons `n` and advance the recursion
(repeat <???> ; `n` is left unchanged
<???>)))) ; but `i` is diminished by one
有几种可能的方法可以解决这个问题,一些比较喜欢的方法(使用尾部递归、使用折叠过程等),但这是最简单的方法,因为它只需要了解一些基本的列表操作过程。无论如何,它的工作原理与预期相符:
(repeats-a-lot '(1 2 3))
=> '(1 2 2 3 3 3)
(repeats-a-lot '(1 2 3))
=> '(1 2 2 3 3 3)