ERLEDIGT
JA
JA
ANTWORTEN
28
28
ZUGRIFFE
5544
5544
EMPFEHLEN
-
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 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;
}
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?
-
05.07.07 16:43 #2MeinerEiner_80 Tutorials.de Gastzugang
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
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
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?
-
Da das eine Übungsaufgabe sein soll, denke ich mal, brauchst du System.arraycopy gar nicht. das geht komplett ohne. So wie ich das verstanden habe, soll nachher ein Array zurück gegeben werden.
Schau dir mal diesen Beitrag an, da hab ich versucht zu erklären wie man am besten auf eine Rekusive lösung kommt.
http://www.tutorials.de/forum/java/2...-aber-wie.html
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
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

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?
-
oder muss ich hier meine methode von oben aufrufen und vorher definieren dass sie das array teilen soll....
-
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
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
heißt quasi: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.
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?
-
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
zEriXGeändert von zerix (06.07.07 um 11:41 Uhr)
Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
mir gehts genau so....
hab das jetzt mal so gemacht
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
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 :
1 2 3 4 5 6 7
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 dannundCode :1
return wert1;
? 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?Code :1
return wert2;
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
zEriXGeändert von zerix (06.07.07 um 12:31 Uhr)
Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
wie bau ich mir denn dann meine teilarrays? wie mach ich das?
-
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
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
Ähnliche Themen
-
Array teilen
Von pflaster999 im Forum C/C++Antworten: 5Letzter Beitrag: 14.06.09, 17:03 -
überdimensionales array teilen
Von Lobedan im Forum PHPAntworten: 2Letzter Beitrag: 13.06.09, 00:50 -
in C ein Array mit For aufsummieren...
Von Zorrtis im Forum C/C++Antworten: 11Letzter Beitrag: 21.10.08, 11:56 -
Array nach bestimmten Muster teilen
Von Breuker im Forum PHPAntworten: 6Letzter Beitrag: 03.04.07, 12:30 -
String variabler Hälfte in mehrere Teile teilen und Array erstellen
Von suedi im Forum PHPAntworten: 5Letzter Beitrag: 12.12.03, 16:13





Zitieren

Login





