c++递归判断一个正整数是否是回文数-野牛程序员教少儿编程
作者:野牛程序员:2025-05-22 09:34:36C++阅读 2160
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
