Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình đệ quy để kiểm tra xem số có phải là palindrome hay không trong C ++

Chúng tôi được cung cấp một số nguyên làm đầu vào. Mục đích là để tìm xem số đầu vào Num có phải là palindrome hay không bằng cách sử dụng đệ quy.

Để kiểm tra xem một số có phải là palindrome hay không, hãy đảo ngược số đó và kiểm tra xem cả hai số có giống nhau hay không. Nếu số đảo ngược bằng số ban đầu, thì đó là palindrome.

Ví dụ

Đầu vào - Số =34212;

Đầu ra - 34212 không phải là Palindrome!

Giải thích - Nếu đảo ngược 34212 thì chúng ta nhận được 21243. 34212! =21243 do đó số đầu vào không phải là palindrome.

Đầu vào - Số =32123;

Đầu ra - 32123 là Palindrome!

Giải thích - Nếu chúng ta đảo ngược 32123 thì chúng ta nhận được 32132. 32123! =32123 do đó số đầu vào là palindrome.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Trong cách tiếp cận này, chúng tôi đang sử dụng hàm đệ quy revrsNum (int num1, int num2) lấy số đầu vào là num1 và số tạm thời là num2.

Đối với các trường hợp cơ sở-:if num1 là 0 trả về num2.

Else-:tính toán đảo ngược của num1 bằng cách sử dụng đệ quy. Hoàn trả được tính toán ngược lại.

Nếu cả hai đều giống nhau thì số đầu vào là palindrome.

  • Lấy số đầu vào là Num.

  • Lấy Num2 =revrsNum (Num, 0)

  • Hàm revrsNum (int num1, int num2) tạo ngược lại num1 một cách đệ quy và trả về số đã đảo ngược.

  • Nếu num1 là 0 thì trả về num2 như được tính toán ngược lại.

  • Khác nhiều num2 bằng 10 và thêm num1% 10 vào đó.

  • Giảm num1 đi 10 bằng cách sử dụng num1 =num1 / 10.

  • Đệ quy bằng cách sử dụng revrsNum (num1, num2);

  • Trả về kết quả.

  • In kết quả nhận được bên trong main.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

1345431 is Palindrome!