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)