Methode Rekursiv umschreiben

Gansa

Aktives Mitglied
Hallo, ich habe ein Programm geschrieben, das mir meine Elemente im Array immer wieder mit dem Nachbar aufsummiert z.B sollte mit dem Beispiel die Ausgabe so aussehen:
[63]
[34,29]
[17,17,12]
[7,10,7,5].

Ich habe das Iterativ hinbekommen, jedoch möchte ich das Programm Rekursiv umschreiben, unten könnt ihr sehen wie weit ich gekommen bin. Jedoch ist hier das Problem, das mein array.length immer nur bei -1 bei jedem durchlauf bleibt. So addiere ich jedes mal die letzte Zahl mit, was ich aber nicht möchte. Ich brauche irgendein Ansatz wie ich mein Array nach jeder Addition am Ende wegschneide. Kann mir da jemand Tipps und gute Vorschläge geben? Bin seit gestern Nacht am grübeln.. Vielen Dank im Voraus!



Java:
public class SumArray {

    public static void main(String[] args) {

        int [] randomarray = {1,6,4,3,2};
        System.out.print("Das  Array: ");
        
        for (int index = 0; index < randomarray.length; ++index) {
            System.out.print(randomarray[index] + " ");
        }
        System.out.println();
        System.out.println("_____________________________________");
        System.out.println();

        sum(randomarray,randomarray.length);



    }




    public static void sum(int [] array, int n){

        if(n <= 0)
            return;

            for (int j = 0; j < array.length - 1; j++) {
                array[j] = array[j] + array[j + 1];



                System.out.print(array[j] + " ");


            }

        System.out.println("");
            sum(array,n-1);


        }


    }
 
Was übergibst Du im Parameter n?

Und dann schau Dir an, was du als Limit in dem rekursiven Aufruf verwendest...
 
Genau, und warum nutzt Du diese Länge des Arrays nicht in der for schleife in der Methode?
 
Genau, und warum nutzt Du diese Länge des Arrays nicht in der for schleife in der Methode?
Das habe ich schon versucht, das Problem ist das die Länge immer n-1 bleibt bis das komplette Array berechnet wurde. Danach wird n erst um eins reduziert, aber ich möchte das es nach der ersten Berechnung schon einmal subtrahiert wird, genau das ist das Problem..
 
Also nur um sicher zu gehen: Du willst doch diese Ausgabe haben, oder?

Code:
~/tmp$ java SumArray
Das  Array: 1 6 4 3 2
_____________________________________

7 10 7 5
17 17 12
34 29
63

Wenn dem so ist: Was für eine Grenze nutzt Du in der Schleife als hinteres Element?
 
Dann erneut der Hinweis, dass Du Dir in der Methode einmal die Schleife ansehen solltest. Du hast einen Parameter, der das letzte Feld angibt. Also solltest Du die Schleife auch so machen, dass diese nur den entsprechenden Part des Arrays behandelt.
 

Neue Themen


Zurück
Oben