用遞迴方式實現將乙個非負整數逆序輸出

2021-07-04 00:20:36 字數 822 閱讀 3905

題目描述:用遞迴技術實現將輸入的小於32768的非負整數逆序輸出。如輸入123,則輸出321。

分析:儘管本題要處理的是「數」,但我們可以按照非數值問題進行分析,並建立相應的遞迴演算法。第一步,先將問題進行簡化。假設要輸出的正整數只有一位,則該問題就簡化為「逆序」輸出一位正整數。對一位正整數實際上無所謂逆序不逆序,問題實際上簡化為輸出一位整數。

第二步,對於乙個大於10 的數,在邏輯上可以將它分為兩部分:個位上的數和個位以前的數全部數字。

第三步,將個位以前的全部數字看成乙個整體,則為了逆序輸出這個大於10 的正整數,可以按一下步驟進行操作:

1.        輸出個位上的數字;

2.        逆序輸出個位以前的全部數字。

這就是將原來的問題分解後,用較小的問題來解決原來大問題的演算法。其中操作2中的問題「逆序輸出個位以前的全部數字」只是對原問題在規模上進行了縮小。這樣描述的操作步驟實際上就是乙個遞迴的操作步驟。

整理上述分析結果,把第一步化簡問題的條件作為遞迴結束條件,將第三步分析得到的演算法作為遞迴演算法,可以寫出如下完整的遞迴演算法描述。

若  要輸出的整數只有一位

則  輸出該整數

否則  輸出整數的個位數字,逆序輸出除個位以外的全部數字。

結束。注意:本題中的分析思路具有廣泛的適用性,可以有效地針對一般的非數值問題找到簡單的遞迴演算法。

#include void reverse(int m);

main()

void reverse(int m)

from: 

如何判斷乙個非負整數是否是2的冪

如何判斷乙個數是2的冪,主要是要找出2的冪次方的數的特點。我們知道,1個數乘以2就是將該數左移1位,而2的0次冪為1,所以2的n次冪 就是2的0次冪n次乘以2 就是將1左移n位,這樣我們知道如果乙個數n是2的冪,則其只有首位為1,其後若干個0,必然有n n 1 為0。在求1個數的二進位制表示中1的個...

給定乙個非負整數陣列,將它們排成乙個盡可能大的數

給定乙個非負整數陣列,將它們排成乙個盡可能大的數,例如,給定陣列 9,81,6,35,3,30 那最後得到的最大數是981635330.問題的實質是,新建一種規則判斷兩個數字的大小,即 從左往右 依次比較兩個數字的各位上的數,直到比到其中乙個數字的最後一位 獲取資料 非負整數陣列 x input x...

求n個連續自然數之和為乙個非負整數的陣列

def find combinations num n int num 0.5 這裡直接開根號,縮小迴圈範圍 res 前可以轉化成中間項的倍數,所以下面for迴圈求得是中間項的值 for i in range 2 n 1 if num i 0 mid 01 i 中間數 mid 02 int num ...