问题描述
写一个递归程序,输入一个整数,按从高位到低位的顺序输出其所有数字,每两个数字中间用空格格开。例如,输入整数12345,输出1 2 3 4 5。请进一步思考如何修改程序,才能输出数字取反后的整数,即在上例中输出整数54321。注意这里的进一步思考仅供个人练习,不要提交到作业程序中,即最后的结果不要输出54321,否则自动判题程序会出错
输入格式
输入一个整数n(1<=n<=100000)
输出格式
按从高位到低位的顺序输出其所有数字,每两个数字中间用空格隔开(最后多一个空格也没关系)
样例输入
54321
样例输出
5 4 3 2 1
解题思路:
要想递归输出各位数字,需要找到变化量,即每次少最右边一位数字,可以用除号实现,因为在递归到最左边一位时就要输出,所以递归出口的设置可以是当整数被除成0时,她的上一层肯定就一位数,可以输出,再上一层是最左边两位数,取余即可。另外还需要设置一个全局变量的字符串来拼接结果。
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 + " ");
}
}