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

โปรแกรมเรียกซ้ำตรวจสอบเลข Palindrome ใน C++

ภาพรวม

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

วิธีตรวจสอบ: กลับตัวเลขแล้วเปรียบเทียบกับตัวเลขเดิม หากเท่ากัน คือ Palindrome

ตัวอย่าง

อินพุต − Num = 34212

เอาต์พุต − 34212 is not a Palindrome!

คำอธิบาย − กลับ 34212 ได้ 21243 34212 != 21243 จึงไม่ใช่ Palindrome

อินพุต − Num = 32123

เอาต์พุต − 32123 is Palindrome!

คำอธิบาย − กลับ 32123 ได้ 32123 เท่ากัน จึงเป็น Palindrome

แนวทางการแก้ปัญหา

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

Base case: หาก num1 == 0 คืน num2 (ตัวเลขที่กลับแล้ว)

Recursive: num2 *= 10; num2 += num1 % 10; num1 /= 10; เรียกซ้ำ revrsNum(num1, num2)

  • รับตัวเลข Num
  • คำนวณ Num2 = revrsNum(Num, 0)
  • ฟังก์ชัน revrsNum สร้างตัวเลขย้อนกลับแบบเรียกซ้ำ
  • หาก num1 == 0 คืน num2
  • มิฉะนั้น num2 = num2*10 + num1%10; num1 /= 10; เรียกซ้ำ
  • เปรียบเทียบ Num กับ Num2 พิมพ์ผลลัพธ์

ตัวอย่างโค้ด C++

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