문자열은 null 문자로 끝나는 1차원 문자 배열입니다. 문자열의 역순은 같은 문자열이 반대 순서로 된 것입니다. 예를 들어.
Original String: Apple is red Reversed String: der si elppA
재귀를 이용하여 문자열 형태의 문장을 반전시키는 프로그램은 다음과 같다.
예시
#include <iostream> using namespace std; void reverse(char *str) { if(*str == '\0') return; else { reverse(str+1); cout<<*str; } } int main() { char str[] = "C++ is fun"; cout<<"Original String: "<<str<<endl; cout<<"Reversed String: "; reverse(str); return 0; }
출력
Original String: C++ is fun Reversed String: nuf si ++C
위 프로그램에서 reverse() 함수는 문자열을 반전시키는 재귀 함수입니다.
처음에 reverse()는 문자열의 시작을 가리키는 포인터인 *str을 받아들입니다. 값이 null이면 함수가 반환됩니다. 그렇지 않은 경우 함수는 str+1 값, 즉 문자열의 다음 요소로 자신을 재귀적으로 호출합니다. 결국 str이 null일 때 str의 값은 뒤에서 앞으로 인쇄됩니다. 따라서 반전된 문자열이 인쇄됩니다. 이것은 다음 코드 스니펫에 의해 표시됩니다.
if(*str == '\0') return; else { reverse(str+1); cout<<*str; }
main() 함수에서 문자열이 초기화됩니다. 또한 원래 문자열과 반전된 문자열이 표시됩니다. 이것은 다음과 같이 표시됩니다 -
char str[] = "C++ is fun"; cout<<"Original String: "<<str<<endl; cout<<"Reversed String: "; reverse(str);