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

20 篇文章 2 订阅

                                                数字正序输出

问题:

        任意输入一个整数,从高位到低位逐个输出每一位(正序输出)

        例如:

            input = 123

            output = 

                    1

                    2

                   3

 

思路:

    如果我们直接思考这个问题,那么可能会没有头绪,因此我们可以进行如下思考,由简单到复杂:

    假定输入一个数,记这个数为num,同时假定我们有一个正序输出数字的子程序 print_inverse()(请忽略这里子程序命名的错误,当时写错了,这个程序是实现正序输出的,后面我会补充逆序输出的教程,QAQ)。

  1. 当num是一个一位数时,也即1<= num <= 9,这时我们发现可以只需要输出num就可以了。
  2. 当num是一个两位数时,比如 num = ab(这里的ab代表a*10+b,以下同理),这时我们可以把这个数分解为 (a) (b),分解之后的数都是一位数,可以利用步骤1的处理方法,对于这种情况我们先输出(a),再输出(b)即可。
  3. 当num是一个三位数时,比如 num = abc,这时我们可以把这个数分解为(ab)(c),然后求(ab)的正序序列就可以用到步骤2了,然后再输出(c)。细化这一步骤就可以看到(ab)(c) = (a)(b)(c),即把输出两位数的正序这一任务转化到分别输出一位数的这一任务。如下图所示

                            

    4.通常情况下,当num是任意一个数时,比如 num = abcdefg,都可以进行如此转化 num = (abcdef)(g),先完成前面一坨,再完成后面的输出就OK了。

 

    以上的思想就是递归的思想,如果用子程序来实现的话,那么用伪代码表示可以如下:

print_inverse(num)
{
    如果 1<=num and num<=9
        输出 num
    
    否则
        print_inverse(floor(num/10))
        输出 (num mod 10)
}

    这里的floor(num/10)相当于取前面一坨,完成前面这一坨数字正序输出的任务;

    这里的 num mod 10相当于对10取余数,提取num的最后一个数;

    例如:num = 123,floor(num/10) = 12, num mod 10 = 3

 

解答(raptor流程图):

                                                               

                                                  

 

结果:

                                                        

 

补充:

        后面我新增了一篇博客,数字逆序输出,这两个的差异只在于输出的先后顺序,对比看可能对递归有个更深的理解。

---------------------------------------------------------------------------------------------------


        需要代做程序或者有其他问题的可以联系QQ545030769

  • 10
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

踏雪无痕是个小疯子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值