Array teilen und aufsummieren

hornylist

Mitglied
folgendes....


Schreiben Sie eine weitere Methode, die das Array im Attribut aufsummiert, allerdings
auf rekursive Art. Verwenden Sie dazu eine weitere Hilfsmethode
mit zwei Parametern, die den linken und rechten Index des aufzusummierenden Bereichs
angibt. Diese Methode soll, sofern der spezifizierte Bereich aus mehr als einer
Zahl besteht, den Bereich halbieren und rekursiv jeweils die Summe der beiden Hälften
berechnen, diese zusammenzahlen und die Summe zurückgeben!


schaut bei mir mal so aus:

public s
Code:
tatic float ausummieren2 ( float[] array ) {

		float[] ha1 = new float[];
		float[] ha2 = new float[];

		while ( array.length == 1) {
			return array[i];
			}
			for ( int i = 0; i<= array.length/2 ; i++){
				System.arraycopy (array,0,ha1,0,array.length/2);
				return ha1;
				}

			for (int i <= array.length/2, i = array.length, i++){
				System.arraycopy (array,array.length/2,ha2,0,array.length/2);
				return ha2;
				}

motzt mir aber der kompiler schon bei ha1 und ha2 weil er da ne länge haben will, die ich aber nicht hab!
außerdem kann er mit sowas "int i = 0; i<= array.length/2 ; i++" nix anfangen!
hat jemand eine idee wie ich das machen kann?
 
Code:
public static float ausummieren2 ( float[] array ) {

        float[] ha1 = new float[];
        float[] ha2 = new float[];

        while ( array.length == 1) {
            return array[i];
            }
            for ( int i = 0; i<= array.length/2 ; i++){
                System.arraycopy (array,0,ha1,0,array.length/2);
                return ha1;
                }

            for (int i <= array.length/2, i = array.length, i++){
                System.arraycopy (array,array.length/2,ha2,0,array.length/2);
                return ha2;
                }
Was tust du da eigentlich? Das ist doch keinen Meter rekursiv!
Wieso machst du
return ha1;
wieso
return ha2,

?
Wo ist die zweite Hilfsmethode die du sinnvollerweise nutzen sollst?

Ich glaube du solltest dir noch ein paar mehr Gedanken dazu machen.. Ein neues Konzept erstellen..
Denn wenn man dir in diesem Stadium Tips geben soll, geh das meiner Meinung nach nicht, ohne das Programm selbst fast zu schreiben..


*grüssle*
MeinerEiner
 
ha 1 und ha2 sind meine neuen teilarrays...
von denen hätte ich dann die anfangs und die endwerte zurückgegeben!

man kann auch tipps geben ohne den code dazu... sowas geht...
aber egal...
über gedankenanstöße würd ich mich freun...
 
Hallo,

also ein Tipp wäre mal, dass du dir mal das Grundprinzip von Rekursion anschaust. Wie Meiner_Einer schon anmerkte, ist nichts von deinem bisherigen Ansatz rekursiv.
Viel mehr tipps kann man dir jetzt auch nicht geben ohne die Lösung zu geben.

MFG

zEriX
 
ich soll also eine methode machen, die sich selber immer und immer wieder aufruft... oder kann ich auch eine methode machen die das array in 2 teile teilt und eine andere ruft diese dann auf?
ist das prinzip mit system.arraycopy richtig? oder geht das garnicht?
 
hmm..... hab mir das durchgelesen, hilft mir aber leider nicht sonderlich weiter.... versteh schon was das alles macht und wie, kann das aber leider nicht auf meine aufgabe transferieren :confused:
ich brauch eine methode, die mir die beiden enden des arrays gibt und eine die das array rekursiv teilt und aufsummiert....
wie soll die rekursive teilung dann machen?
da brauch ich eine methode, die mir das array teilt, und die nehm ich dann immer wieder her so wie

if (array.length == 1) {
return array[0];

else {

jetzt brauch ich hier eine Hilfsmethode zb. teilearray die dann den array teilt, oder?
und wenn der array dann wieder länger is als 1 dann muss ich teilearray wieder aufrufen, oder? is das gedanklich richtig?
 
Ich kenne leider deine Aufgabe nicht. Ich hab das bisher so verstanden, dass das Array in 2 Teile geteilt werden soll und diese 2 hälften miteinander addiert werden sollen, somit hat man dann wieder nur ein Array als Rückgabeparameter.
In einer Methode kann man nämlich immer nur einen Wert zurückgeben und keine 2.

MFG

zEriX
 
Schreiben Sie eine weitere Methode, die das Array im Attribut aufsummiert, allerdings
auf die oben beschriebene rekursive Art. Verwenden Sie dazu eine weitere Hilfsmethode
mit zwei Parametern, die den linken und rechten Index des aufzusummierenden Bereichs
angibt. Diese Methode soll, sofern der spezifizierte Bereich aus mehr als einer
Zahl besteht, den Bereich halbieren und rekursiv jeweils die Summe der beiden Hälften
berechnen, diese zusammenzahlen und die Summe zurückgeben!


oben beschriebene rek.art:

Unter der Annahme, dass große und kleine Zahlen in einem Array ungefahr uberall gleich
häufig vorkommen, ist es daher sinnvoll, das Array in zwei Halften aufzuteilen, diese einzeln
zu summieren und die beiden Ergebnisse aufzuaddieren. Das Aufsummieren der beiden Hälften kann dann wieder rekursiv durch weiteres Aufteilen und Zusammenzählen geschehen.

heißt quasi:

methode1. array in 2 teile teilen, und diese dann aufsummieren!
und zwar durch so langes teilen des arrays bis die teilarrays 1 lang sind und diese dann aufsummieren...
das ganze dann mit der hilfsmethode

hilfsmethode:

soll jeweils den startwert der beiden teilarray wiedergeben! - falls das teilarray länger als 1 ist soll dieser wieder geteilt und rekursiv aufsummiert werden!


quasi einmal rekursiv teilen und in der hilfsmethode rekusiv ausummieren
? ist das jetzt vom prinzip her so richtig?
 

Neue Beiträge

Zurück