Array teilen und aufsummieren

Irgendwie muss ich sagen verstehe ich den Text nicht. So wie ich den Text verstehe machen die Methode und die Hilfsmethode, die verwendet werden soll, genau das gleiche. Also beide Methoden sollen das Array aufteilen und aufsummieren.

Ich würde dir mal raten, dass du erstmal das alles in einer Methode rekursiv löst, das ist nämlich gar kein Problem. Grob gesagt, wenn das Array, welches übergeben wird nur 1 Feld groß ist, gibst du direkt die zahl zurück, sonst rufst du die Methode nochmal auf und übergibst ein Teil-Array, rufst die Methode nochmal auf mit dem anderen TeilArray, addierst die ergebnisse und gibst das zurück.

MFG

zEriX
 
Zuletzt bearbeitet:
mir gehts genau so....
hab das jetzt mal so gemacht
Code:
public static float sum2 ( float[] array ) {

if (array.length == 1 ) {
			return array[0];
			}
			else {
				sum2(int i = 0; i< array.length/2; i++);
					return wert1;
                                 sum2( int i == array.length/2 ;i = array.length; i++);
					return wert2;
					gesamtwert = wert1 + wert2;
					}

nimmt mir der cimpiler aber nicht ab wegen den zeilen
int i = 0; i< array.length/2; i++)
und
int i == array.length/2 ;i = array.length; i++

weiß nicht wie ich das sonst schreiben soll...
hat jemand einen tip?
ich übergeb ihm ja jeweils ein teilarray... einmal bis array.length/2 und dann das andere bis zum ende des arrays ab der hälfte.... aber das erkennt er nicht weil die formulierungen falsch sind!
 
Code:
else {
sum2(int i = 0; i< array.length/2; i++);
return wert1;
sum2( int i == array.length/2 ;i = array.length; i++);
return wert2;
gesamtwert = wert1 + wert2;
}

Hast du schon mal irgendwas mit Java oder einer anderen Sprache gemacht
Das was du da schreibst, ist die Bedingung einer for-Schleife und kein Array. Was soll dann
Code:
return wert1;
und
Code:
return wert2;
? Wo kommen die her und wo werden die gesetzt. Dir ist doch sicher auch klar, dass nach einem return die Methode verlassen wird und nichts weiter gemacht wird, oder?

Du solltest dir erstmal ein Teil-Array "zusammenbauen" das kommt ja nicht aus dem nichts und das kannst du dann übergeben. Dann solltest du vielleicht das was zurück geliefert wird, von der Methode in Variablen speichern, diese Variablen dann addieren und zurückgeben.

MFG

zEriX
 
Zuletzt bearbeitet:
Du machst dir ein neues Array, welches so groß ist wie das TeilArray was du haben willst, und schreibst die werte dann da rein.

MFG

zEriX
 
vom prinzip her klar,
ich muss mein array hald immer teilen bis die länge 1 is.... aber wenn ich ein array der länge 1000 hab, dann muss ich ja erst 2 machen der länge 500 dann wieder 2 der länge 250 usw... und was für den fall dass ich die länge meines ursprungsarrays nicht weiß? wie soll ich dann die länge der teilarrays bestimmen?
 
Du kennst die länge deines Arrays immer, weil du diese Abfragen kannst mit array.length.

Ich hatte dir die komplette Lösung schon in worten gesagt, du musst es nur noch in Java-Code schreiben. Ich bin jetzt bis morgen weg, also kann heute auch nicht mehr antworten.

MFG

zEriX
 
und mit welcher methode füllst du die arrays wieder? mit arrays.copyof oder system.arraycopy? was is da zu empfehlen? geht sich leichter auch oder?
 
Zurück