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