Rekrusive Programmierung



  • Hallo,
    Ich habe folgendes Problem ich muss morgen für die Uni was abgeben. Das ganze ist auch kein Problem bis auf eine Aufgabe

    Zählen Sie alle Zeichenketten über einem Alphabet bis zu einer angebenen Länge rekursiv in lexikographischer Ordnung auf.

    Test >> allStringsRek: aString upTo: maxLength

    Ich hab die Aufgabe so verstanden das wenn man 2 eingibt das Alphabet a b aa bb
    rauskommen müsste. Aber schon dabei bin ich mir nicht sicher!
    Ich müsste das zwar für die Programmiersprache Smalltalk machen aber das ist ja egal. Ich weiss einfach nicht an wenn ich mich noch wenden kann. Ich komme nicht weiter.

    Ich kriege es hin das ganze in Zahlen von bsp. 3 runter zu machen. Aber nur einstellig das er mir die Zahlen 3 2 1 ausgibt.
    Kann mir irgendjemand sagen wir ich das rekrusiv programmieren könnte. Ich hab mir wirklich Gedanken gemacht aber ich komme einfach nicht weiter. Ich wäre wirklich sehr dankbar



  • Also eien Ausgabe ist schon falsch, die du dir gedacht hast:
    das sollte (imho) rauskommen

    a
     b
    aa
    ab
    ba
    bb
    

    hm... guck mal, fällt dir was auf?

    1
       2
       .
       .
       9
      10
      11
      12
      1.
      1.
      19
      20
      21
     .
    .
    .
    

    Wenn du deine Buchstaben jetzt als zahlen ansiehst, ist das einfaches zählen 😉
    also schreib dir eine functkion, die zähln kann und rufe diese verschachtelt rekursiv auf.
    ZEig doch mal was du schon an code hast, auch wenns smalltalk ist, ein bisschen kann man das sicher lesen 🙂



  • Lexikographische Ordnung ist a, aa, aaa, aab, ab, aba, abb, b, ba ... also wie im Wörterbuch.



  • f:=[i = 1
    ifTrue:[1]
    ifFalse:[f value:(i-1)].
    ].
    f value:4

    so zählt er die Zahlen rekrusiv von 4 3 2 1 runter. Aber worauf du etzt hinauswillst versteh ich ehrlich gesagt nich wirklich.


Anmelden zum Antworten