Raptor-数字逆序输出(递归法)

20 篇文章 2 订阅

                                          数字逆序输出

问题:

        任意输入一个正整数,逆序输出这个数字

        例如:

            input = 123

            output = 

                    3

                    2

                    1

说明:

        这篇博客基于我前面数字正序输出的博客,都是利用递归的思路,可以对比来看,对比着看就会有更深刻的理解。如何创建子程序请见 Raptor-子图与子程序

思路:

      假定输入一个数,记这个数为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

  • 12
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏雪无痕是个小疯子

您的鼓励将促使我的创作更有价值

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值