Anzahl von for-Schleifen in Abhängigkeit von Zahleneingabe erzeugen

jonni

Neues Mitglied
Hallo,

wie kann man in Abhängigkeit von einer Eingabe einer natürlichen Zahl n (also z.B. 7) genau n (also in dem Fall 7) for-Schleifen erzeugen, die jeweils eine bestimmte Anweisung in Abhängigkeit von diesem n ausführen?
Ich stelle die Frage bewusst allgemein, da ich dieses Problem schon öfters hatte in unterschiedlichen Situationen.

Im aktuellen Anlass geht es darum, dass in diesen for-Schleifen die Werte a eines Arrays a[0;...;n-1] der Länge n jeweils um 1 ausgehend von null bis zu einer bestimmten Zahl m erhöht werden sollen und dann eine Anweisung ausgeführt werden soll.

Bsp.:
n=3; m =4 müsste liefern:
for(int i=0; i<4;i++){
for(int j=0; j<4;j++{
for(int k=0;k<4;k++){
// hier kommt jetzt die Anweisung rein , etwa eine Berechnungsvorschrift, ein Vergleich etc.

a[2]++
}
a[1]++;
a[2]=0;
}
a[0]++;
a[1]=0;
a[2]=0;
}

Die Anweisungsbedingungen sind alles Funktionen in Abhängigkeit von n und können leicht allgemein ausgedrückt werden. Also mit Ausnahme der innersten Schleife, wo halt die eigentlichen Anweisungen stehen, können die Anweisungen der äusseren Schleifen ausgedrückt werden durch:
a[y]++;
for(int i=y+1;i<n;i++){
a=0; }
,wobei das y nacheinander die Werte von 0 bis n-1 durchläuft.

Das Problem ist aber eben, dass obiges Codeschnipsel mit einer statischen Anzahl an for-Schleifen arbeitet, diese for-Schleifen müssten eben dynamisch erzeugt werden. Wie geht das ? (eine Lösung, eine bestimmte Anzahl von for-Schleifen einzutippen scheidet aus, da n auch sehr gross werden kann)
Also die innerste for-Schleife müsste man wohl statisch einbinden, weil da mehr Code drin ist, aber dann müssten eben aussenrum (n-1) for-Schleifen erzeugt werden, die dieselben Anweisungsfunktionen haben.

Vielen Dank für Hilfestellungen
 
Zuletzt bearbeitet:
Die Lösung heisst Rekursion. Wie genau du die Schleifen verschachteln willst habe ich zwar immernoch nicht verstanden aber das sollte nicht das Problem sein:

Java:
void doSomething(int[] a, int n, int m)
{
    if (n < 0)
    {
        throw new IllegalArgumentException("n muss größer oder gleich 0 sein");
    }
    if (n == 0)
    {
        // innerster schleifenkörper
    }
    else
    {
         // mach irgendwas
         doSomething(a, n - 1, m);
    }
}
 
Zuletzt bearbeitet:

Zurück
Oben