如何不使用Elixir内置函数统计列表中指定值的出现次数?
手动实现统计列表元素出现次数的Elixir函数
你可以通过递归遍历列表的方式实现这个功能,完全不依赖内置的Enum模块:
defmodule ModuleName do # 空列表直接返回0,作为递归终止条件 def function_name([], _target), do: 0 def function_name([head | tail], target) do # 匹配当前头部元素是否等于目标值,累加计数 if head == target do 1 + function_name(tail, target) else function_name(tail, target) end end end # 测试示例 ModuleName.function_name([10,20,20,30], 20) # ⇒ 2
实现思路
- 用模式匹配处理空列表的边界情况:当列表为空时,直接返回0,这是递归的终止条件。
- 对于非空列表,拆分出头部元素
head和剩余的尾部列表tail:- 如果
head等于目标值,就将计数加1,再递归处理剩余的tail; - 如果不相等,直接递归处理
tail,计数保持不变。
- 如果
- 递归过程会逐步遍历完整个列表,最终累加得到目标元素的出现次数。
内容的提问来源于stack exchange,提问作者sd gopal
相关产品推荐
相关产品推荐

