Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 재귀 함수를 사용해 문자열 길이 구하는 방법


개요

문자열이 주어졌을 때, 사용자 정의 함수 또는 내장 함수를 사용하여 해당 문자열의 길이를 계산하는 것이 이번 글의 목표입니다.

C++에서 문자열의 길이를 구하는 방법은 크게 두 가지가 있습니다.

  • 사용자 정의 함수 사용 − 재귀 호출을 활용해 문자열을 한 글자씩 탐색하며, 문자열의 끝을 나타내는 널 문자('\0')를 만날 때까지 카운트를 1씩 증가시키는 방식입니다.
  • 내장 함수(strlen) 사용 − "string.h" 헤더 파일에 정의된 strlen() 함수를 사용하는 방법입니다. 이 함수는 문자열 타입의 인수 하나를 받아 해당 문자열의 길이를 정수형 값으로 반환합니다.

예제

입력: str[] = "tutorials point"
출력: 문자열의 길이는 15
설명: "tutorials point"라는 문자열은 알파벳 14글자와 공백 1개로 이루어져 있으므로 전체 길이는 15가 됩니다.

알고리즘

시작
1단계 -> 재귀를 이용해 길이를 구하는 함수 선언
    int length(char* str)
       IF (*str == '\0')
          return 0
       End
       Else
          return 1 + length(str + 1)
       End
2단계 -> main() 함수에서
    char str[] = "tutorials point" 선언
    length(str) 호출
종료

구현 예제 코드

#include <bits/stdc++.h>
using namespace std;
//재귀 함수로 문자열 길이 계산
int length(char* str) {
   if (*str == '\0')
      return 0;
   else
      return 1 + length(str + 1);
}
int main() {
   char str[] = "tutorials point";
   cout<<"length of string is : "<<length(str);
   return 0;
}

동작 원리

위 코드의 length() 함수는 문자열의 첫 번째 문자를 먼저 확인합니다. 널 문자가 아니라면 자기 자신을 다음 문자 위치(str + 1)에 대해 다시 호출하면서 1을 더해줍니다. 이러한 재귀 호출이 반복되다가 널 문자에 도달하면 0을 반환하고, 각 호출이 종료되면서 1씩 누적되어 최종적으로 문자열의 전체 길이가 계산됩니다. 시간 복잡도는 문자열 길이에 비례하여 O(n)입니다.

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

length of string is : 15