Рекурсия (печать строки введенного текста в обратном порядке) - C (СИ)
Формулировка задачи:
Здравствуйте! Помогите, пожалуйста, разобраться в следующей программе:
вводится строка текста с клавиатуры и выводится рекурсивно в обратном порядке
Вот код:
Непонятно одно, как putchar в функции reverse печатает символы в обратном порядке. Ведь порядок следования двух операторов в части else структуры if приводит к тому что функция reverse переходит к граничному NULL строки до вывода символа на печать. Как только рекурсивный вызов завершается, символы выводятся в обратном порядке ( а почему так???).
#include <stdio.h>
void reverse( char *);
int main( void )
{
char sentence[ 80 ]; /* create char array */
printf( "Enter a line of text:\n" );
gets( sentence);
printf( "\nThe line printed backward is:\n" );
reverse( sentence );
return 0; /* indicates successful termination */
}
/* recursively outputs characters in string in reverse order */
void reverse( char * sPtr )
{
if ( sPtr[ 0 ] == '\0' )
return;
}
else {
reverse( &sPtr[ 1 ] );
putchar( sPtr[ 0 ] );
}
}Решение задачи: «Рекурсия (печать строки введенного текста в обратном порядке)»
textual
Листинг программы
#include <stdio.h>
void reverse(char * sPtr)
{
if(*(sPtr + 1))
reverse(sPtr + 1);
putchar( *sPtr );
}
int main()
{
char sentence[80] = {0};
printf("Enter text (less than 80 chars)\n");
gets(sentence);
reverse(sentence);
printf("\nEnter any key to continue\n");
getchar();//Ñòîï-òî÷êГ*
return 0;
}