[VB08] - Schleifenauflösung

Schmied

Grünschnabel
Guten Morgen,

ich möchte gerne lernen wie ich eine Alternative zu folgender Schleife programmieren kann:

Code:
        Dim zeichen As String() = {"a", "b", "c", "d", "e", "f", "g"}
        Dim ergebnis As String
        
        For i1 As Integer = 0 To 25
            For i2 As Integer = 0 To 25
                For i3 As Integer = 0 To 25
                    For i4 As Integer = 0 To 25
                              ergebnis = zeichen(i1) + zeichen(i2) + zeichen(i3) + zeichen (i4)
                              Console.Write(ergebnis)                          
                    Next
                Next
            Next
        Next
Also die Schleife dient dazu alle Kombinationen aus einem Array , hier a bis g, bei einer Länge von 4 Stellen aufzulisten.
Nur sieht das mit dieser Schleife weder nach schönen Code aus, noch weiss ich, wie man die Zahl der durchläufe bestimmen kann. D.h. ich brauche die Kombinationen des Array zwischen 3 und 7 Stellen. Natürlich könnte ich dafür 5 Subs nehmen, aber dadurch wird es auch nicht schöner.
Eigentlich wird ja hier ein und die selber Schleife 4 Mal durchlaufen. Kann man das dann nicht irgendwie umdrehen? Also anstelle der 4 Schleifen eine nehmen die 4x für jede Stelle durchlaufen wird? Nur wie setze ich dann die Ergebnisse richtig zusammen oder ist das der falsche Ansatz?

Wünsche einen schönen Tag
 
Rekursion.
Sprich du schreibst eine Methode die sich in sich selbst aufruft.

Pseudo Code:
Code:
funktion MeineSchleife(array,  zaehler)
{
   wenn zaehler kleiner 4 //solange Laufen wie Zähler kleiner 4
   {
       Schleife( i kleiner 25)
           return array(i) + MeineSchleife(array, zaehler + 1); //Funktion MeineSchleife rekursiv durchlaufen und zaehler um 1 erhöhen
   }
}
 
Das verstehe ich zwar gerade nicht wirklich, aber ich werde ich mal nach suchen und dann gucken ob ich das kapiere. Ich melde mich dann so oder so noch mal.
Herzlichen Dank schon mal für den Hinweis.
 
Guten Morgen

So, ich habe nun etwas über Rekursion gelesen und ich glaube ich verstehe auch in etwa den Pseudocode jetzt.
Leider macht mir die VB Syntax bei der Funktion mit dem Array bzw. dem Return-Wert da einen Strich durch die Rechnung und natürlich sind die Beispiele im Internet ohne Array und Schleife.
 
Zurück