Definition 1: does not use min.

    smallest(n,[])   = n
    smallest(n,h::t) = smallest(n,t) when n <= h
    smallest(n,h::t) = smallest(h,t) when n > h

Definition 2: uses min.

    smallest(n,[])   = n
    smallest(n,h::t) = smallest(min(n,h),t)