Finden Sie die Summe aller Elemente im array wird rekursiv in der Sprache java
Hier ist mein code:
public int sum(int[] array, int index)
{
//int index is the number of elements in the array.
//Here is my base case:
if (index == 0)
return 0;
//Now it's time for the recursion
else
return array[index] + sum(array, index + 1);
}
Ich immer ein out of bounds Fehler, aber ich weiß nicht was ich falsch mache.
- Wo ist dein stop-Bedingung ? Sie haben nicht ein und Sie behalten den steigenden index.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Basis-Bedingung ist fehlerhaft. Es sollte sein:
Beachten Sie, dass Sie brauchen, um passieren
index = 0
auf den ersten Anruf. Wenn Sie auf der Durchreise sindindex = array.length - 1
, dann halten Sie die base-case, wie es ist, und ändern Sie die rekursive Methode invocation übergebenindex - 1
stattindex + 1
.Jedoch tun Sie Sie wirklich brauchen Rekursion? Ich würde ernsthaft geben es Hunderte von Gedanken, bevor Sie erreichen für Rekursion statt Schleife für diese Aufgabe.
Versuchen,
sum({9},0)
anstatt von 0 bis zur höchsten Indexposition , gehen Sie vom höchsten index auf 0, ich habe (index -1), weil Sie sagten, index Gesamt-Elementen, also wenn das array hat 10 Elemente, das Letzte element hat den index 9
@ Masud - Sie sind der code hat einen logischen Fehler, obwohl (ich bin Java-Anfänger, also sorry, wenn ich bin falsch).
erhalten eine out-of-bounds-Fehler index beginnt bei 0, daher Bedeutung gibt es keinen index gibt.
'index - 1' funktionieren würde.
Auch dies würde sich ändern, Ihre base-case-die Rückkehr '0' als Rückgabe-array[0] wird array[0] zweimal Hinzugefügt und eine falsche Summe.
Dies ist mein code:
Wenn du mit Java 1.8 Sie können die folgenden
oder sogar