數字逆序輸出
問題:
任意輸入一個正整數,逆序輸出這個數字
例如:
input = 123
output =
3
2
1
說明:
這篇博客基於我前面數字正序輸出的博客,都是利用遞歸的思路,可以對比來看,對比着看就會有更深刻的理解。
思路:
假定輸入一個數,記這個數爲num,同時假定我們有一個逆序輸出數字的子程序 print()。
- 當num是一個一位數時,也即1<= num <= 9,這時我們發現可以只需要輸出num就可以了。
- 當num是一個兩位數時,比如 num = ab(這裏的ab代表a*10+b,以下同理),這時我們可以把這個數分解爲 (a) (b),分解之後的數都是一位數,可以利用步驟1的處理方法,對於這種情況我們先輸出(b),再輸出(a)即可。
- 當num是一個三位數時,比如 num = abc,這時我們可以把這個數分解爲(ab)(c),先輸出(c),然後利用步驟二輸出(ab)的逆序序列就完成了。細化這一步驟就可以看到(ab)(c) = (a)(b)(c),即把輸出兩位數的逆序這一任務轉化到分別輸出一位數的這一任務。如下圖所示
4.通常情況下,當num是任意一個數時,比如 num = abcdefg,都可以進行如此轉化 num = (abcdef)(g),先輸出最後一個,然後再輸出前面一坨,然後這個任務就OK了。
以上的思想就是遞歸的思想,如果用子程序來實現的話,那麼用僞代碼表示可以如下:
print(num)
{
如果 1<=num and num<=9
輸出 num
否則
輸出 (num mod 10)
print(floor(num/10))
}
這裏的 num mod 10相當於對10取餘數,提取num的最後一個數;
這裏的floor(num/10)相當於取前面一坨,完成前面這一坨數字逆序輸出的任務。
例如:num = 123,num mod 10 = 3,floor(num/10) = 12.
解答(raptor流程圖):
結果:
---------------------------------------------------------------------------------------------------
需要代做程序或者有其他問題的可以聯繫QQ545030769