입력으로 정수가 주어집니다. 목표는 재귀를 사용하여 입력 숫자 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!