Raptor-數字逆序輸出(遞歸法)

                                          數字逆序輸出

問題:

        任意輸入一個正整數,逆序輸出這個數字

        例如:

            input = 123

            output = 

                    3

                    2

                    1

說明:

        這篇博客基於我前面數字正序輸出的博客,都是利用遞歸的思路,可以對比來看,對比着看就會有更深刻的理解。

思路:

      假定輸入一個數,記這個數爲num,同時假定我們有一個逆序輸出數字的子程序 print()。

  1. 當num是一個一位數時,也即1<= num <= 9,這時我們發現可以只需要輸出num就可以了。
  2. 當num是一個兩位數時,比如 num = ab(這裏的ab代表a*10+b,以下同理),這時我們可以把這個數分解爲 (a) (b),分解之後的數都是一位數,可以利用步驟1的處理方法,對於這種情況我們先輸出(b),再輸出(a)即可。
  3. 當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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章