Cho một số nguyên làm đầu vào. Mục tiêu là kiểm tra số Num có phải palindrome (đối xứng) hay không bằng đệ quy.
Để kiểm tra palindrome, đảo ngược số và so sánh với số gốc. Nếu số đảo ngược bằng số gốc thì là palindrome.
Ví dụ
Đầu vào - Num = 34212
Đầu ra - 34212 không phải Palindrome!
Giải thích - Đảo ngược 34212 được 21243. 34212 != 21243 nên không phải palindrome.
Đầu vào - Num = 32123
Đầu ra - 32123 là Palindrome!
Giải thích - Đảo ngược 32123 được 32123. Hai số bằng nhau nên là palindrome.
Phương pháp sử dụng trong chương trình dưới đây
Dùng hàm đệ quy revrsNum(int num1, int num2) nhận số đầu vào num1 và số tạm num2.
Cơ sở: num1 == 0 trả về num2.
Ngược lại: num2 = num2*10 + num1%10; num1 /= 10; đệ quy revrsNum(num1, num2).
So sánh số gốc với số đảo ngược.
Nhập số Num.
Num2 = revrsNum(Num, 0).
Hàm revrsNum(int num1, int num2) tạo số đảo ngược đệ quy.
Nếu num1 == 0 trả về num2.
Ngược lại: num2 *= 10; num2 += num1%10; num1 /= 10; return revrsNum(num1, num2).
In kết quả trong main.
Ví dụ mã
#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<<" là Palindrome!"; } else{ cout <<Num<<" không phải Palindrome!"; } return 0; }
Đầu ra
Nếu chạy mã trên sẽ cho kết quả:
1345431 là Palindrome!