M
Man kann auch einfach davon ausgehen, dass jede Stelle entweder aus einem A oder einem B besteht und dies Stellenweise durchgehen, hier mit dem Stellenzähler 'laenge':
#include <stdio.h>
#include <string.h>
void zeige_buchstabe( int aktlaenge, int wortlaenge, char * wort ) {
if( aktlaenge > 0 ) {
// Platz für das neue Wort
char neueswort[ wortlaenge + 1 ];
// Ein A und der Rest des alten Wortes
sprintf( neueswort, "A%s", wort );
zeige_buchstabe( aktlaenge - 1, wortlaenge, neueswort );
// Oder ein B und der Rest des alten Wortes
sprintf( neueswort, "B%s", wort );
zeige_buchstabe( aktlaenge - 1, wortlaenge, neueswort );
} else {
// Länge == 0 -> Wort ausgeben!
puts( wort );
}
}
int main( int argc, char *argv[] ) {
int laenge = 0;
printf( "Wortlänge: " );
scanf( "%d", &laenge );
if( laenge > 0 ) {
char wort[ laenge + 1 ];
wort[ 0 ] = '\0'; // Leerstring
zeige_buchstabe( laenge, laenge, wort );
}
}
Diese Lösung ist weder Resourcenschonend noch elegant, benutzt aber eine Rekusrsion, wo keine nötig ist...
Ciao MM