Array teilen und aufsummieren

Warum ein neues Array? Mach es doch nicht komplizierter als es ist.

Gruss

Java:
package de.tutorials;

public class ArraySplitter {
	
	double myArray [] = {1,2,3,4,5,6,7,8,9,10,11};
	
	ArraySplitter() {
		System.out.println(sum(this.myArray));
	}
	
	
	public double sum(double[] myArray) {
		
		return sumHelper(myArray,0,myArray.length-1);
	}
	
	private double sumHelper(double [] array, int start, int end) {
		
		if (start == end) return array[start];
		int mitte = (end - start) /2;
		return sumHelper(array, start, start + mitte) + sumHelper(array ,start + mitte + 1, end);
	}


	public static void main(String[] args) {
		new ArraySplitter();
	}

}
 
@limago

so funktioniert es natürlich auch. :)
Hatte mir keine zu großen Gedanken gemacht und das war die erste Lösung die mir dann so in den Kopf kam. ;-)

MFG

zEriX
 
Ja ich weiß der Threat ist alt. Stehe aber vor dem gleichen Problem und die vorgeschlagene Lösung ist mir zu komplex. Ich habe mich mal selber drangesetzt und was gebastelt allerdings funktioniert das ganze noch nicht. Hat jemand eine Idee?

Code:
 
Zuletzt bearbeitet:
Hi,

ich weiss zwar nicht warum Deine Lösung einfacher sein soll als meine, aber Dein Fehler ist

int mitte = (anfang + ende) / 2;

Es muss heißen:

int mitte = (ende - anfang) / 2;

dann passt es.

Guten Rutsch....
 
Kannst Du das mal präzisieren. Ich habe Deinen Code kopiert und laufen lassen. Dies hat erwartungsgemäß zu einem Stapelüberlauf geführt. Danach habe ich wie beschrieben den Code geändert und siehe da, alles hat funktioniert. Also beschreibe doch mal Deinen Fehler und poste ggf. die Fehlermeldung und Deinen neuen Code.
 
Also die Fehlermeldung lautet folgendermaßen:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
at Teile.teile(Teile.java:17)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.teile(Teile.java:25)
at Teile.main(Teile.java:6)
 
Zuletzt bearbeitet:
Äh, also die Subtraktion ist nicht kommuntativ. "(anfang - ende) / 2" ist nicht dasselbe wie "(ende - anfang) / 2". In Deinem Fall ist das Ergebnis negativ. Deswegen auch der Arrayunterlauf....

Debuggen oder mal die Werte ausgeben hilft oft ungemein.

Guten Rutsch.
 

Neue Beiträge

Zurück