c++递归判断一个正整数是否是回文数-野牛程序员教少儿编程
作者:野牛程序员:2025-05-22 09:34:36C++阅读 2291
c++递归判断一个正整数是否是回文数-野牛程序员教少儿编程
? 思路说明:
数字回文判断本质是判断正序和反序是否相等
例如:12321 正着读和反着读是一样的。
为了递归判断,可以转化为字符串进行两头对比。
✅ 方法1:字符串递归判断
#include <iostream>
#include <string>
using namespace std;
// 递归函数:判断字符串是否为回文
bool isPalindrome(const string &s, int left, int right) {
if (left >= right) return true; // 左右指针相遇,说明是回文
if (s[left] != s[right]) return false; // 不相等,则不是回文
return isPalindrome(s, left + 1, right - 1); // 递归判断中间部分
}
int main() {
int number;
cout << "请输入一个正整数:";
cin >> number;
if (number < 0) {
cout << "请输入正整数!" << endl;
return 0;
}
string s = to_string(number); // 转换为字符串
if (isPalindrome(s, 0, s.length() - 1)) {
cout << number << " 是一个回文数。" << endl;
} else {
cout << number << " 不是一个回文数。" << endl;
}
return 0;
}? 示例输入:
请输入一个正整数:12321
? 输出:
12321 是一个回文数。
✅ 方法2:整数逆转后对比原值(进阶可选)
#include <iostream>
using namespace std;
// 递归函数:反转数字(返回反转后的值)
int reverseNumber(int num, int rev = 0) {
if (num == 0) return rev;
return reverseNumber(num / 10, rev * 10 + num % 10);
}
int main() {
int number;
cout << "请输入一个正整数:";
cin >> number;
if (number < 0) {
cout << "请输入正整数!" << endl;
return 0;
}
if (number == reverseNumber(number)) {
cout << number << " 是一个回文数。" << endl;
} else {
cout << number << " 不是一个回文数。" << endl;
}
return 0;
}野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

