Der unten gezeigte Code funktioniert einwandfrei. Er gibt die Position des Elements aus, das sich in der if-Klausel befindet, und beendet das Element. Immer wenn das Element nicht gefunden wird, wird die Funktion auf max ausgeführt und gibt 0 an die aufrufende Funktion zurück, um anzuzeigen, dass keine Elemente gefunden wurden.Rekursive lineare Suche
Allerdings habe ich darüber nachgedacht, die Position des gefundenen Elements an die aufrufende Funktion zurückzugeben, anstatt sie zu drucken. Da die Rückkehr der Position nur zu einer früheren Instanz der Funktion und nicht zu der aufrufenden Funktion zurückkehren würde, bin ich betroffen. Wie erreiche ich das?
#include <stdio.h>
#include <stdlib.h>
int RLinearSearch(int A[],int n,int key)
{
if(n<1)
return 0;
else
{
RLinearSearch(A,n-1,key);
if(A[n-1]==key)
{
printf("found %d at %d",key,n);
exit(0);
}
}
return 0;
}
int main(void)
{
int A[5]={23,41,22,15,32}; // Array Of 5 Elements
int pos,n=5;
pos=RLinearSearch(A,n,23);
if(pos==0)
printf("Not found");
return 0;
}
So findet dies im Prinzip das erste Auftreten des Elements von rechts nach links des Arrays. Sobald das erste Vorkommen gefunden wurde, schaut die Funktion nicht weiter? –
@geek_code Das ist korrekt, da die Funktion nur ein Objekt zurückgeben kann, wird das erste Element auf der rechten Seite zurückgegeben. – dasblinkenlight
Ich schätze Ihre Antworten. Vielen Dank. –