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

C++에서 atoi()의 재귀적 구현

<시간/>

숫자가 포함된 문자열이 제공됩니다. 목표는 재귀적 atoi() 메서드를 사용하여 등가 수를 찾는 것입니다. int atoi(const char *str) 문자열 인수 str을 정수(int 유형)로 변환합니다.

예시-:

입력 − Str[] ="58325"

출력 − 등가 소수점은 :58325입니다.

설명 − 문자열에 동일한 숫자 58325가 포함되어 있습니다.

입력 - Str[] ="00010"

출력 − 등가 소수점은 :1

설명 − 문자열에 동일한 숫자 10이 포함됩니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

이 접근 방식에서 우리는 재귀 함수 recurAtoi()를 사용하고 있습니다. 이 함수는 입력 문자열과 길이를 가져와서 각 문자에 대해 십진수로 변환하고 10을 곱합니다. 이전 결과를 여기에 추가합니다.

  • 숫자가 포함된 입력 문자열 Str[]을 가져옵니다.

  • strlen(Str)을 사용하여 길이를 계산합니다.

  • recurAtoi(char *str, int len) 함수는 입력을 받아 재귀적 atoi() 기능을 사용하여 계산된 숫자를 반환합니다.

  • 길이가 1인 경우 숫자 *str -'0'을 반환합니다.

  • temp=10*recurAtoi(str,len-1)를 취합니다.

  • 그리고 temp=temp+str[len-1]-'0'을 설정합니다.

  • 끝 반환 온도에서.

  • 결과를 인쇄합니다.

#include <bits/stdc++.h>
using namespace std;
int recurAtoi(char *str, int len){
   if (len == 1){
      return *str - '0';
   }
   int temp=10*recurAtoi(str,len-1);
   temp=temp+str[len-1]-'0';
   return (temp);
}
int main(void){
   char Str[] = "58325";
   int length = strlen(Str);
   cout<<"Equivalent decimal :"<<recurAtoi(Str, length);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Equivalent decimal : 58325