Hallo, ich schon wieder.
Es geht um Folgendes:
Man hat ein Array bel. Länge, das zufällige Zahlen enthält, die aufsteigend sortiert sind.
Man will wissen, ob eine bestimmte Zahl in dem Array steht und wenn ja, an welcher Stelle.
Ist das Element nicht enthalten, will man die Stelle, an der das Element gestanden hätte negieren und davon 1 abziehen.
Beispiel: [0,2,3,4]
Sucht man 3, soll die Methode, die man implementieren soll, 2 zurückgeben.
Sucht man nach 7, so -5 (=4*(-1)-1).
Das soll man rekursiv implementeiren und ich suche erstmal nur nach einer Idee, wie man es rekursiv sich denken kann.
Ich habe mir irgendwie sowas gedacht:
Trivialfälle sind:
leeres Array: return -1
Array mit einem Element. Wenn Element mit dem Eintrag übereinstimmt, gebe die Stelle des Arrayelements zurück. Wenn das Element, das man suchen will, kleiner ist, gebe -i zurück, wenn das Element das i-te Element ist.
Wenn das zu suchende Element größer als das eine vorhandene Array-Element ist, gebe -(i+2) zurück, wenn das vorhandene Array Element an i-ter Stelle steht.
Aber irgendwie komme ich nun nicht weiter.
Wenn ich zum Beispiel das Array [8,9,10,15] habe:
Wie kann man das aufsplitten?
In [8] und [9,10,15] und dann wiederum in [9] und [10,15] usw.?
Aber wie zählt man dann das jeweils zusammen:
Wenn ich zum Beispiel nach 13 suche:
Zuerst bei [8]: Da hätte ich (8 steht an 0-ter Stelle): -2
Dann bei [9,10,15]: Da hätte ich (wenn 9 wieder die 0-te Stelle sein soll): -3
Dann bei [10,15]: Da hätte ich (ist 10 wieder die 0-te Stelle?) -2
Und dann noch bei [15]: Da hätte ich (wenn 15 die 0-te Stelle ist) -1
Aber es muss ja -4 herauskommen. :bahnhof:
Es geht um Folgendes:
Man hat ein Array bel. Länge, das zufällige Zahlen enthält, die aufsteigend sortiert sind.
Man will wissen, ob eine bestimmte Zahl in dem Array steht und wenn ja, an welcher Stelle.
Ist das Element nicht enthalten, will man die Stelle, an der das Element gestanden hätte negieren und davon 1 abziehen.
Beispiel: [0,2,3,4]
Sucht man 3, soll die Methode, die man implementieren soll, 2 zurückgeben.
Sucht man nach 7, so -5 (=4*(-1)-1).
Das soll man rekursiv implementeiren und ich suche erstmal nur nach einer Idee, wie man es rekursiv sich denken kann.
Ich habe mir irgendwie sowas gedacht:
Trivialfälle sind:
leeres Array: return -1
Array mit einem Element. Wenn Element mit dem Eintrag übereinstimmt, gebe die Stelle des Arrayelements zurück. Wenn das Element, das man suchen will, kleiner ist, gebe -i zurück, wenn das Element das i-te Element ist.
Wenn das zu suchende Element größer als das eine vorhandene Array-Element ist, gebe -(i+2) zurück, wenn das vorhandene Array Element an i-ter Stelle steht.
Aber irgendwie komme ich nun nicht weiter.
Wenn ich zum Beispiel das Array [8,9,10,15] habe:
Wie kann man das aufsplitten?
In [8] und [9,10,15] und dann wiederum in [9] und [10,15] usw.?
Aber wie zählt man dann das jeweils zusammen:
Wenn ich zum Beispiel nach 13 suche:
Zuerst bei [8]: Da hätte ich (8 steht an 0-ter Stelle): -2
Dann bei [9,10,15]: Da hätte ich (wenn 9 wieder die 0-te Stelle sein soll): -3
Dann bei [10,15]: Da hätte ich (ist 10 wieder die 0-te Stelle?) -2
Und dann noch bei [15]: Da hätte ich (wenn 15 die 0-te Stelle ist) -1
Aber es muss ja -4 herauskommen. :bahnhof: