Рекурсия (печать строки введенного текста в обратном порядке) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Помогите, пожалуйста, разобраться в следующей программе: вводится строка текста с клавиатуры и выводится рекурсивно в обратном порядке Вот код:
Листинг программы
  1. #include <stdio.h>
  2. void reverse( char *);
  3. int main( void )
  4. {
  5. char sentence[ 80 ]; /* create char array */
  6. printf( "Enter a line of text:\n" );
  7. gets( sentence);
  8. printf( "\nThe line printed backward is:\n" );
  9. reverse( sentence );
  10. return 0; /* indicates successful termination */
  11. }
  12. /* recursively outputs characters in string in reverse order */
  13. void reverse( char * sPtr )
  14. {
  15. if ( sPtr[ 0 ] == '\0' )
  16. return;
  17. }
  18. else {
  19. reverse( &sPtr[ 1 ] );
  20. putchar( sPtr[ 0 ] );
  21. }
  22. }
Непонятно одно, как putchar в функции reverse печатает символы в обратном порядке. Ведь порядок следования двух операторов в части else структуры if приводит к тому что функция reverse переходит к граничному NULL строки до вывода символа на печать. Как только рекурсивный вызов завершается, символы выводятся в обратном порядке ( а почему так???).

Решение задачи: «Рекурсия (печать строки введенного текста в обратном порядке)»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. void reverse(char * sPtr)
  4. {
  5.     if(*(sPtr + 1))
  6.         reverse(sPtr + 1);
  7.     putchar( *sPtr );
  8. }
  9.  
  10. int main()
  11. {
  12.     char sentence[80] = {0};
  13.     printf("Enter text (less than 80 chars)\n");
  14.     gets(sentence);
  15.     reverse(sentence);
  16.     printf("\nEnter any key to continue\n");
  17.     getchar();//Ñòîï-òî÷êГ*
  18.     return 0;
  19. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы