Ho il seguente programma:
#include <stdio.h>
int main() {
int c;
if((c == getchar()) !=EOF) {
main();
printf("%c", c);
}
}
Il testo mi chiede cosa è che fa questo programma, cioè mi chiede:
Che cosa fa il seguente programma? Che cosa accade se scambiate le righe 8 e 9?
La risposta è:
Riceve in ingresso un carattere e chiama ricorsivamente main() finché non viene inserito il
carattere EOF . Ogni carattere inserito viene poi stampato in ordine inverso. Se scambiate le
righe 8 e 9, i caratteri vengono visualizzati nell’ordine di input.
a b c
c b a
Ma io non sto riuscendo a capire come fa ad agire ricorsivamente?
-Quello che risesco a dire io, leggendo rigo per rigo è che si ha ovviamente la dichiarazione del main al rigo 3.
-Si ha la dichiarazione della variabile int c e che nel caso è un carattere.
-Si ha una condizione if che all'interno del quale si dichiara che se c viene letto come singolo carattere, (grazie alla funzione getchar()), e non si ha la fine del file (End Of File), allora si richiama il main.
-alla fine si stampa il carattere c.
Spero di aver decifrato bene gli step esecutivi!?!?