Musterlösung Binäre Suche

Die binäre Suche kann auch rekursiv gestaltet werden.
Das Programm wird aufgerufen mit:
>> binaerSucheRekStart;

binaerSucheRekStart.m
disp('binaerSucheRekStart.m')

global Liste
global Gesucht
Gesucht = 'g'
Liste = 'Informations- und Kommunikationstechnologie im Maschinenbau';
Liste = sort(lower(Liste));
ol = length(Liste); % oberes limit
ul = 1; % unteres limit


binaerSucheRek(ul,ol);

 

Das eigentliche Programm wird einmalig durch Eingabe von binaerSucheRekStart aufgerufen und ruft sich selbst immer wieder auf...

binaerSucheRek.m
function binaerSucheRek(ul,ol)
jj = round((ol+ul)/2);
global Liste
global Gesucht

if Liste(jj) == Gesucht
  fprintf('Oho, ich habe das %2s an der %2i ten Stelle von "%s" gefunden ',Gesucht,jj,Liste);
  disp('Ende')
  return
end

if ol == ul
  disp('Leider nicht gefunden!')
  return
end

if Liste(jj) > Gesucht
  ol = jj;
  disp('runter')
  binaerSucheRek(ul,ol)
else
  ul = jj;
  disp('hoch')
  binaerSucheRek(ul,ol)
end

end