Frage von leonardomessi, 41

Rekursive formel in java(max number soll ausgegeben werden)?

also die aufgabe lautet ein array durchzugehen und dabei der Eintrag auszugeben (rekursiv).. das algorithmus funktioniert bei positiven zahlen, jedoch gibt immer eine 0 aus bei negativen zahlen,, was mache ich falsch bzw. kann jmd mir ganz genau erklären weshalb der befehl (Math.max) die negativen zahlen nicht erkennt?

     static double rekursiveMax(double[] input, int pos) {
     if (pos >= 0){
         return Math.max(input[pos], rekursiveMax(input, pos - 1));
    }
         return 0;
 }
Antwort
von MarcelDavis321, 31

Der Ansatz ist gut es fehlt nur was. Du gehst zwar alle Zahlen durch aber du prüfst nicht ob es die höchste Zahl ist. Am besten übergibst du noch einen Wert, den nennst du max und in der if machst du noch vor das return if (input[pos] > max dann max = input[pos]



am ende dann return max und da sollte nicht 0 returnt werden

Antwort
von Mikkey, 26

Ändere die Abfrage von >= auf >

Statt 0 gibst Du input[pos] zurück.

Kommentar von leonardomessi ,

also es hat geklappt aber bitte sag mir wieso das so ist ich verstehe es nicht !!

Kommentar von PROGRAM4FUN ,

Die erste Überlegung ist, was Du zurück geben muss, wenn dein Array nur ein Element hat (bzw. pos == 0). Dann ist das größte Element automatisch das Element selbst. Also ist die Abbruchbedingung der Rekursion pos == 0. Wenn das Array aus mehr als einem Element besteht, ist das Maximum rekursiv definiert, durch das Maximum aus dem aktuellen wert an der Stelle pos und dem Maximum aller Werte der vorherigen stellen.

static double rekursiveMax(double[] input, int pos) { 
if (pos > 0){
return Math.max(input[pos], rekursiveMax(input, pos - 1));
}
return input[pos];
}
Kommentar von Mikkey ,

Danke, so war es gedacht ;-)

Keine passende Antwort gefunden?

Fragen Sie die Community