Qbasicnews.com

Full Version: Recursion challenge
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
Well, attending to Moneo, here's my entri Smile

Code:
FUNCTION binarySearch% (Array%(), n%)
   binarySearch% = binarySearchRec%(Array%(), LBOUND(Array%), UBOUND(Array%), n%)
END FUNCTION

'
' binarySearchRec% is called by binarySearch% takes four parameters:
'
' Array%() -> The array to look inside of.
' i1% -> lower limit.
' i2% -> upper limit.
' n% -> Number that is searched.
'
' We basicly take the array, and look the element in the mid place.
' if it equals n%, we have found it!
'
' If the element in the array is SMALLER than n%, we should look in
' the right half of the array, so we call ourselves recursively with
' new i1%, i2% values.
'
' If the element in the array is BIGGER than n%, we should look in the
' left half of the array.
'
' This (of course) only works if the array is sorted.
'
FUNCTION binarySearchRec% (Array%(), i1%, i2%, n%)
   Res% = -1
   IF i1% > i2% THEN binarySearchRec% = Res%: EXIT FUNCTION
   midPoint% = i1% + (i2% - i1%) \ 2
   IF Array%(midPoint%) = n% THEN
      Res% = midPoint%
   ELSEIF Array%(midPoint%) < n% THEN
      Res% = binarySearchRec%(Array%(), midPoint% + 1, i2%, n%)
   ELSE
      Res% = binarySearchRec%(Array%(), i1%, midPoint% - 1, n%)
   END IF
   binarySearchRec% = Res%
END FUNCTION
Pages: 1 2 3