首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找包含值的子列表的索引。

查找包含值的子列表的索引。
EN

Stack Overflow用户
提问于 2017-03-19 22:07:04
回答 1查看 43关注 0票数 0

假设我们有以下列表:

代码语言:javascript
复制
'( (1 2 3) (3 4 5) (7 8 9) (2 9 9) )

我需要从包含给定值的子列表中创建一个包含所有索引的列表,例如对于2,结果将是'(0 3) .It是一项家庭作业,我们不允许使用循环。使用递归来解决这个问题很简单,但我想使用泛函,但我不知道这是否可能(不使用全局变量、set!和其他任何横向函数)。欢迎任何提示或建议!

EN

回答 1

Stack Overflow用户

发布于 2017-03-19 23:12:03

是的,你绝对可以用折页来解决这个问题。Foldl可用于建模列表的任何类似循环的遍历。

老实说,理解如何在这样的问题上使用foldl的最清晰的方法是首先按照设计配方的简单递归方式编写它。您应该小心地只在递归调用中使用列表的rest

接下来,您需要重构程序,使其只进行尾调用;也就是说,如果要定义一个名为f的函数,则“(f ...)”大小写应该是(f ...),其中没有“外部”的任何内容。为了实现这一点,您可以为函数引入一个额外的参数,通常称为“累加器”。空情况下函数的结果可能只是累加器。此时,更改为foldl的使用只是一个用列表调用foldl的问题,累加器的初始值,以及接受列表和累加器的第一个元素并生成新累加器的函数。

呼!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42892886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档