问题是。
以数字= 13和基数= 2调用时,下面的递归代码显示什么?
public static void convert(int number, int base) {
int remainder = number % base;
int quotient = number / base;
if (quotient > 0) convert(quotient, base);
System.out.print(remainder);
我已经在纸上处理了大约一个小时,无论我继续提出1011还是1101。
我算错了数学还是什么?
答案 0 :(得分:1)
通过在递归调用之后执行打印,您将以相反的顺序打印出余数,例如2 ^ 0位,2 ^ 1位,依此类推。而不是2 ^ 3位,2 ^ 2位等。将打印内容移至if语句之前,它应该可以正常工作。
答案 1 :(得分:0)
我将假设代码看起来像
public static void convert(int number, int base) {
int remainder = number % base;
int quotient = number / base;
if (quotient > 0) convert(quotient, base);
System.out.print(remainder);
}
public static void main(String[] args) {
convert(13, 2);
}
迭代次数:
A) number = 13, base = 2, remainder = 1, quotient = 6;
B) number = 6, base = 2, remainder = 0, quotient = 3;
C) number = 3, base = 2, remainder = 1, quotient = 1;
D) number = 1, base = 2, remainder = 1, quotient = 0; print "1"
c) print "1"
b) print "0"
a) print "1"
所以看起来输出应该是1101。