Рекурсия (печать строки введенного текста в обратном порядке) - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д