递归题目,我哪里写错了?

来源:百度知道 编辑:UC知道 时间:2024/03/29 07:00:31
题目:对于任意整数,依次输出它每个十进制位,要求每两个十进制位之间用空格分开

public class A1{
public static void main(String [] args ){
dec(-1);
}
static void dec(int n){
if (n<0){
System.out.print("-");
dec(-n);}
else{
if (n>10)
dec(n/10);
System.out.print(" ");
}
System.out.print(n%10);
}
}
n是正整数时,比如n=123,输出:1 2 3,正确
n是负整数时,比如n=-1,应输出:-1,但我怎么输出: - 1-1
??

没错啊,第一次进入第一个if,执行System.out.print("-"),输出-
然后dec(1),进入else子句,因为n<10,所以直接执行System.out.print(" "),输出- 1
最后再执行System.out.print(n%10),注意此时n仍为-1;
也就是最后的结果是- 1-1