Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Verzweifel an Rekursion

TOB2 / 4 Antworten / Flachansicht Nickles

Hallo allerseits,

ich hänge hier seit Stunden und komme nicht vorran, dabei habe ich ein (glaube ich) recht triviales Problem. Ich möchte einfach eine X-Stellige Zeichenkette mir anzeigen und dabei alle Kombinationen berücksichtigen (ich mache es in VB.net aber die Sprache ist nebensächlich). Also zb so:

A
b
c
d
e
f
g
[...]
AA
AB
AC
AD
[...]
ZZ
AAA
AAB

usw.

sollte meines erachtens ein recht simpler rekursiver Algorithmus sein. Aber ich bekomme es nicht hin :-(

bei Antwort benachrichtigen
Andreas42 TOB2 „Verzweifel an Rekursion“
Optionen

Hi!

Das geht schon rekursiv, man muss nur mit den Übergabeparametern klar kommen. Beschränken wir uns erstmal auf drei Buchstaben, dann könnte man eine Funktion nutzen, die drei Laufparameter nutzt und ein weiteres Element als Zeiger auf eine der drei Laufparameter: rekprint(c1, c2, c3, i)

C1, c2 und c3 sind dann die jeweiligen Buchstaben, in i übergeben wir die Rekursionsebene.

Die Funktion macht nun nichts anderes, als an Hand von i zu bestimmen, welcher der Buchstaben "gerollt" werden soll.

Beim ersten Aufruf wäre i=1, dass würde bedeuten c1 muss 26mal hochgezählt werden und dann die Funktion mit dem neuen Wert von c1 und den alten von c2 und c3 neu aufgerufen werden. Zusätzlich übergeben wir als i den Wert i+1, also die nächste ebene.

Bei einem solchen Aufruf wird die Funktion dann c2 "rollen" und nach jedem Rollen sich neu aufrufen.

Das geht bis i=3 ist und die Funktion also c3 "rollt". Dann würde der Aufruf ja mit i=4 erfolgen. Es gibt aber keinen 4. Parameter. Das bedeutet man ist am Ende der Rekursionskette angekommen. Also gibt man den String basierend auf c1, c2 und c3 aus und beendet die Funktion ganz normale (also ohne neuen Rekursionsaufruf).

Bis dann
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen