Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

재귀를 사용하여 문장을 뒤집는 C++ 프로그램

<시간/>

문자열은 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);