Elixir 循环与迭代全解析
1. 递归迭代
在 Elixir 中,若要实现打印前 n 个自然数的功能,由于没有传统的循环结构,需借助递归。以下是示例代码:
defmodule NaturalNums do
def print(1), do: IO.puts(1)
def print(n) do
print(n - 1)
IO.puts(n)
end
end
此代码运用了递归、模式匹配和多子句函数。当 n 等于 1 时,直接打印该数字;否则,先打印前 n - 1 个数字,再打印第 n 个数字。在 shell 中测试:
iex(1)> NaturalNums.print(3)
1
2
3
不过,若输入负数或浮点数,该函数无法正常工作,可通过添加额外的守卫条件解决此问题。
计算列表元素总和的示例代码如下:
defmodule ListHelper do
def sum([]), do: 0
def sum([head | tail]) do
head + sum(tail)
end
end
此代码具有很强的声明性:空列表元素总和为 0;非空列表元素总和等于列表头部元素加上列表尾部元素的总和。在 shell 中测试:
Elixir 循环与迭代全面解析
超级会员免费看
订阅专栏 解锁全文
1857

被折叠的 条评论
为什么被折叠?



