#include #include #define MAX_LEN 20 void espandi( char *s, int ptr ) { /* Condizione di terminazione */ if( ptr == strlen( s ) ) printf( "%s\n", s ); else { /* Se il carattere e` x allora e` necessario sostituirlo prima con lo 0 e poi con l' 1 */ if( s[ptr] == 'x' ) { s[ptr] = '0'; espandi( s, ptr+1 ); /* Chiamata ricorsiva */ s[ptr] = '1'; espandi( s, ptr+1 ); /* Chiamata ricorsiva */ /* ATTENZIONE: al termine dell'espansione e` necessario ripristinare il valore originario */ s[ptr] = 'x'; } else espandi( s, ptr+1 ); /* Chiamata ricorsiva */ } } int main( void ) { char stringa[MAX_LEN+1]; /* Lettura dato di input */ printf( "Introduci la stringa da espandere: " ); scanf( "%s", stringa ); /* Espansione della stringa */ espandi( stringa, 0 ); return( 0 ); }