C++ 中判断数字是否为回文数的递归程序


给定一个整数作为输入。目标是使用递归查找输入数字 Num 是否为回文数。

要检查一个数字是否为回文数,请反转该数字并检查这两个数字是否相同。如果反转后的数字等于原始数字,则它是回文数。

示例

输入 - Num = 34212;

输出 - 34212 不是回文数!

说明 - 如果我们反转 34212,则得到 21243。34212 != 21243,因此输入数字不是回文数。

输入 - Num = 32123;

输出 - 32123 是回文数!

说明 - 如果我们反转 32123,则得到 32123。32123 == 32123,因此输入数字是回文数。

下面程序中使用的方案如下

在这种方案中,我们使用递归函数 revrsNum(int num1, int num2),它接收输入数字 num1 和临时数字 num2。

对于基本情况:- 如果 num1 为 0,则返回 num2。

否则:- 使用递归计算 num1 的反转。返回计算出的反转。

如果两者相同,则输入数字是回文数。

  • 获取输入数字 Num。

  • 获取 Num2 = revrsNum(Num,0)

  • 函数 revrsNum(int num1, int num2) 递归生成 num1 的反转并返回反转后的数字。

  • 如果 num1 为 0,则返回 num2 作为计算出的反转。

  • 否则将 num2 乘以 10 并将 num1%10 加到它上面。

  • 使用 num1=num1/10 将 num1 减少 10。

  • 使用 revrsNum(num1, num2) 进行递归。

  • 返回结果。

  • 在 main 函数内部打印获得的结果。

示例

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

更新于: 2021年11月2日

6K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告