当前位置:首页C++ > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • c++递归判断一个正整数是否是回文数-野牛程序员教少儿编程
  • 相关推荐

    最新推荐

    热门点击