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!
廣告