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+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告