算法训练 递归输出数字 java 题解 446

问题描述

  写一个递归程序,输入一个整数,按从高位到低位的顺序输出其所有数字,每两个数字中间用空格格开。例如,输入整数12345,输出1 2 3 4 5。请进一步思考如何修改程序,才能输出数字取反后的整数,即在上例中输出整数54321。注意这里的进一步思考仅供个人练习,不要提交到作业程序中,即最后的结果不要输出54321,否则自动判题程序会出错

输入格式

  输入一个整数n(1<=n<=100000)

输出格式

  按从高位到低位的顺序输出其所有数字,每两个数字中间用空格隔开(最后多一个空格也没关系)

样例输入

54321

样例输出

5 4 3 2 1

解题思路:

要想递归输出各位数字,需要找到变化量,即每次少最右边一位数字,可以用除号实现,因为在递归到最左边一位时就要输出,所以递归出口的设置可以是当整数被除成0时,她的上一层肯定就一位数,可以输出,再上一层是最左边两位数,取余即可。另外还需要设置一个全局变量的字符串来拼接结果。

扫描二维码关注公众号,回复: 13433941 查看本文章

java代码:

import java.io.*;

public class Main {
	static StringBuilder builder = new StringBuilder();
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int num = Integer.parseInt(br.readLine());
		toPrint(num);
		System.out.print(builder.toString().trim());
	}
	public static void toPrint(int num) {
		if(num == 0) {
			return;
		}
		toPrint(num / 10);
		int temp = num % 10;
		builder.append(temp + " ");
	}
}

提交截图:

猜你喜欢

转载自blog.csdn.net/weixin_48898946/article/details/120808902