Erlang Start![3]

练习链接: http://erlang.org/course/exercises.html

题目:
1. Write a function lists1:min(L) which returns the mini- mum element of the list L.

2. Write a function lists1:max(L) which returns the maximum element of the list L.

3. Write a function lists1:min_max(L) which returns a tuple containing the min and max of the list L.

    > lists1:min_max([4,1,7,3,9,10]) 
{1, 10}
回答:
%% Author: Quon
%% Created: 2009-8-7
%%File: lists1.erl
-module(lists1).
-export([max/1,min/1,min_max/1]).

%Ex1  
max([F 
| R]) ->
  max(R,F).
  
max([], M) 
->
  M;

max([F 
| R], M) ->
  
if
    F 
>= M ->
      max(R, F);
    F 
< M ->
      max(R, M)
  end.

%---------------------------------------+
%Ex2
min([], M) 
->
  M;

min([F 
| R], M) ->
  
if
    F 
>= M ->
      min(R, M);
    F 
< M ->
      min(R, F)
  end.
  
min([F 
| R]) ->
  min(R,F).

%--------------------------------------+
%Ex3
min_max([], {Min, Max}) 
->
  {Min,Max};
  
min_max([F 
| R], {Min, Max}) ->
  
if
    F 
>= Max ->
      min_max(R, {Min, F});
    F 
< Min ->
      min_max(R, {F, Max});
    true 
->
      min_max(R, {Min, Max})
  end.
  
min_max([F 
| R]) ->
  min_max(R, {F, F}).
 

posted on 2009-08-07 10:42  Quon Lu  阅读(243)  评论(0编辑  收藏  举报

导航