erlang 迭代列表并对每个元素应用模数/余数

dpiehjr4  于 2022-12-08  发布在  Erlang
关注(0)|答案(2)|浏览(124)

此方法会传回新的清单,此清单是透过将第二个参数套用为每个清单成员的模数算子而形成,其中包含两个参数:列表和数值。
我目前的方法只对第一个元素而不是所有元素应用模操作数。
我尝试使用cons运算符来构建新列表。

modList([Head | Tail], Num) -> [Head rem Num | Tail].
ybzsozfc

ybzsozfc1#

你的思路是对的,你正在写一个递归函数,所以接下来你需要做两件事:
1.递归步骤:在函数体的某个位置,需要将相同的函数应用于列表的其余部分(例如modList(Tail))。
1.基础案例:如果重复应用递归步骤,因为每次迭代都要从列表中删除一个元素,您将得到一个与函数头模式不匹配列表([Head | Tail])。这将导致function_clause错误,您可以通过......当然......为该列表添加一个子句来修复该错误。因为该子句可能不需要递归(也就是说,它将返回一个硬编码的值),这将关闭递归循环,您的递归函数将完成。
额外提示:在Erlang中,函数名、模块名和原子通常使用snake_case而不是camelCase更符合习惯。换句话说,更常用的函数名是mod_list/2

5vf7fwbs

5vf7fwbs2#

你可以这样做

> Num = 5.
5
> [X rem Y || X <- [1, 2, 3, 4, 5, 6, 7], Y <- [Num]].
[1,2,3,4,0,1,2]

相关问题