Hallo allerseits,
das untenstehende Programm hat die Aufgabe, in einem Array von Zahlen, das größte Element zu finden und auszugeben. Das Problem wird auf zwei Weisen gelöst, eine iterativ, die andere rekursiv.
Die iterative habe ich aus Platzgründen aus dem Code entfernt.
Bei der rekursiven Lösung habe ich ein Problem, das ich nicht verstehe. Die Frage steht im Quelltext.
das untenstehende Programm hat die Aufgabe, in einem Array von Zahlen, das größte Element zu finden und auszugeben. Das Problem wird auf zwei Weisen gelöst, eine iterativ, die andere rekursiv.
Die iterative habe ich aus Platzgründen aus dem Code entfernt.
Bei der rekursiven Lösung habe ich ein Problem, das ich nicht verstehe. Die Frage steht im Quelltext.
Java:
public class MaxArray {
public static void main(String[] args) {
int[] a = new int[5];
a[0] = 7; a[1] = 22; a[2] = 399; a[3] = 29; a[4] = 21;
System.out.println("Groesster Wert ist = " + rekursiv(a));
}
public static int rekursiv(int[] array) {
//Solange das Array mehr als einen Wert hat, wird die Schleife ausgeführt
if(array.length > 1) {
//Es werden zwei zusätzliche Arrays geschaffen, das erste mit einer
//Größe des halben übergebenen Arrays (modulo 2)
int[] speicher1 = new int[array.length / 2];
//das andere mit der Differenz zw. neugeschaffenem und übergebenem
int[] speicher2 = new int[array.length - speicher1.length];
//Dann wird das geteilte Array in die neuen Arrays kopiert
for (int i = 0; i < speicher1.length; i++)
speicher1[i] = array[i];
for (int i = 0; i < array.length - speicher1.length; i++)
speicher2[i] = array[i + speicher1.length];
//Was wird hier (siehe unten) größer gleich vergleichen? Welchen int-Wert
//repräsentiert rekursiv(speicher1) oder rekursiv(speicher2)? Das Maximum?
//Wo kommt es her?
if (rekursiv(speicher1) > rekursiv(speicher2))
return rekursiv(speicher1);
else
return rekursiv(speicher2);
}
else
//hat das Array nur einen Wert, ist dieser auch automatisch der Größte
return array[0];
}
}
Zuletzt bearbeitet von einem Moderator: