计算面积 - Erlang

Calculate Area - Erlang

我有以下函数应该使用列表中的每个值计算面积。

我遇到的问题是该函数只打印列表中第一项的第一个结果,以及我需要为列表中的每一项打印的内容。

你可以认为列表中的每一项都是一个案例,我想打印所有案例。

 area([H|_])->(math:sqrt(3.0) * (H*H)) - (3.14 * (H*H))/2;
 area([_|T])-> area(T).     

你搞错了递归。应该做的是打印头部区域,然后在尾部递归。您还需要添加一个基本案例,处理空列表。

area([]) -> ok;
area([H|T]) ->
  io:format("~p~n", [(math:sqrt(3.0) * (H*H)) - (3.14 * (H*H))/2]),
  area(T).

如果您想要区域列表作为结果,您可以这样做:

area([]) -> [];
area([H|T]) ->
  [(math:sqrt(3.0) * (H*H)) - (3.14 * (H*H))/2 | area(T)].