Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมแบบเรียกซ้ำเพื่อตรวจสอบว่าตัวเลขเป็น palindrome หรือไม่ใน C++


เราได้รับจำนวนเต็มเป็นอินพุต เป้าหมายคือการค้นหาว่าตัวเลขอินพุต Num เป็นพาลินโดรมหรือไม่ใช้การเรียกซ้ำ

หากต้องการตรวจสอบว่าตัวเลขเป็น palindrome หรือไม่ ให้ย้อนกลับหมายเลขนั้นและตรวจสอบว่าตัวเลขทั้งสองตัวเหมือนกันหรือไม่ หากจำนวนที่กลับด้านเท่ากับจำนวนเดิม ก็จะเป็นพาลินโดรม

ตัวอย่าง

ป้อนข้อมูล − Num =34212;

ผลผลิต − 34212 ไม่ใช่พาลินโดรม!

คำอธิบาย − หากเราย้อนกลับ 34212 เราก็จะได้ 21243 34212 !=21243 ดังนั้นหมายเลขอินพุตจึงไม่ใช่ palindrome

ป้อนข้อมูล − Num =32123;

ผลผลิต − 32123 คือพาลินโดรม!

คำอธิบาย − หากเราย้อนกลับ 32123 เราก็จะได้ 32132 32123!=32123 ดังนั้นตัวเลขที่ป้อนคือ palindrome

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

ในแนวทางนี้ เราใช้ฟังก์ชันเรียกซ้ำ revrsNum(int num1, int num2) ซึ่งรับหมายเลขอินพุต num1 และหมายเลขชั่วคราว num2

สำหรับกรณีพื้นฐาน-:ถ้า num1 เป็น 0 ส่งคืน num2

Else-:คำนวณการย้อนกลับของ num1 โดยใช้การเรียกซ้ำ กลับคำนวณย้อนกลับ

หากทั้งคู่เหมือนกัน แสดงว่าหมายเลขอินพุตคือพาลินโดรม

  • นำตัวเลขที่ใส่มา

  • ใช้ Num2 =revrsNum(Num,0)

  • ฟังก์ชัน revrsNum(int num1, int num2) สร้างการย้อนกลับของ num1 แบบเรียกซ้ำและส่งกลับจำนวนที่กลับด้าน

  • ถ้า num1 เป็น 0 ให้คืนค่า num2 ตามที่คำนวณกลับกัน

  • อย่างอื่น num2 คูณ 10 และเพิ่ม num1%10 เข้าไป

  • ลด num1 ลง 10 โดยใช้ num1=num1/10.

  • เรียกซ้ำโดยใช้ revrsNum(num1, num2);

  • ส่งคืนผลลัพธ์

  • ผลการพิมพ์ที่ได้รับภายใน main.

ตัวอย่าง

#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!