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

C++에서 숫자가 회문인지 확인하는 재귀 프로그램

<시간/>

입력으로 정수가 주어집니다. 목표는 재귀를 사용하여 입력 숫자 Num이 회문인지 아닌지를 찾는 것입니다.

숫자가 회문인지 확인하려면 해당 숫자를 반대로 하여 두 숫자가 같은지 확인합니다. 거꾸로 된 숫자가 원래 숫자와 같으면 회문입니다.

예시

입력 - 숫자 =34212;

출력 − 34212는 회문이 아닙니다!

설명 − 34212를 반대로 하면 21243이 됩니다. 34212 !=21243 따라서 입력 번호는 회문이 아닙니다.

입력 - 숫자 =32123;

출력 − 32123은 회문입니다!

설명 − 32123을 반대로 하면 32132가 됩니다. 32123!=32123이므로 입력 번호는 회문입니다.

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

이 접근 방식에서는 입력 번호 num1과 임시 번호 num2를 사용하는 재귀 함수 revrsNum(int num1, int num2)을 사용합니다.

기본 경우-:num1이 0이면 num2를 반환합니다.

Else-:재귀를 사용하여 num1의 역순을 계산합니다. 계산된 역으로 반환합니다.

둘 다 같으면 입력 번호가 회문입니다.

  • 입력된 번호를 가져옵니다.

  • Num2 =revrsNum(Num,0)

  • revrsNum(int num1, int num2) 함수는 num1의 역수를 재귀적으로 생성하고 역수를 반환합니다.

  • num1이 0이면 역으로 계산된 num2를 반환합니다.

  • 그렇지 않으면 num2에 10을 곱하고 여기에 num1%10을 추가합니다.

  • num1=num1/10을 사용하여 num1을 10으로 줄입니다.

  • revrsNum(num1, num2);

    을 사용한 재귀
  • 결과를 반환합니다.

  • 메인 내부에서 얻은 결과를 인쇄합니다.

예시

#include <bits/stdc++.h>
using namespace std;
int revrsNum(int num1, int num2){
   if (num1 == 0){
      return num2;
   }
   num2 *= 10;
   num2 += (num1 % 10);
   num1 = num1/10;
   return revrsNum(num1, num2);
}
int main(){
   int Num = 1345431;
   int Num2 = revrsNum(Num,0);
   if (Num == Num2){
      cout <<Num<<" is Palindrome!";
   }
   else{
      cout <<Num<<" is not a Palindrome!";
   }
   return 0;
}

출력

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

1345431 is Palindrome!