数字逆序输出
问题:
任意输入一个正整数,逆序输出这个数字
例如:
input = 123
output =
3
2
1
说明:
这篇博客基于我前面数字正序输出的博客,都是利用递归的思路,可以对比来看,对比着看就会有更深刻的理解。如何创建子程序请见 Raptor-子图与子程序。
思路:
假定输入一个数,记这个数为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