Вывод строки в инверсном порядке
Рекурсия может использоваться в достаточно неожиданных ситуациях. В примере ниже приведена программа с функцией для вывода в инверсном порядке строки, переданной аргументом этой функции. В функции с помощью рекурсии реализован следующий алгоритм. Если текущий элемент соответствующего символьного массива не является нуль-символом и не совладает с символом i, вызывается функция для обработки следующего символа массива. Если элемент массива является символом i, работа функции заканчивается. Если элемент массива является нуль-символом окончания строки, завершается работа программы с сообщением: I didn't find any 'i'. Таким образом, если строка-аргумент функции содержит хотя бы одну литеру i, строка распечатывается в обратном порядке от этого символа (первого, если их несколько) до начала строки. Если символов i в строке нет, выводится сообщение I didn't find any 'i'.
#includeusing namespace std; void ShowStr(char *str){ if(*str!='i'&&*str) ShowStr(str+1); else if(*str=='i') return; else {cout << "I didn't find any 'i'!\n"; exit(0);} cout <<*str; } int main(){ char s[80]; cout << "Enter text here: "; gets(s); ShowStr(s); cout << endl; return 0;}