2017-11-02 2 views
1

다음 목록에서 각 값을 사용하여 영역을 계산해야하는 함수가 있습니다.계산 영역 - 얼랑

문제는 목록의 첫 번째 항목에 대한 첫 번째 결과 만 인쇄하고 목록의 각 항목에 대해 인쇄해야하는 문제입니다.

목록의 각 항목은 대소 문자로 생각할 수 있으며 모든 경우를 인쇄하고 싶습니다.

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

답변

4

재귀가 잘못되었습니다. 해야 할 일은 머리의 영역을 인쇄 한 다음 꼬리를 재귀하는 것입니다. 빈 목록을 처리하면서 기본 케이스를 추가해야합니다. 대신 결과로 지역의 목록을 원하는 경우

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)]. 
+0

감사 –