计算面积 - 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)].
我有以下函数应该使用列表中的每个值计算面积。
我遇到的问题是该函数只打印列表中第一项的第一个结果,以及我需要为列表中的每一项打印的内容。
你可以认为列表中的每一项都是一个案例,我想打印所有案例。
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)].