递归参数问题

时间:2012-07-31 10:46:18

标签: java integer-division

public void mystery1(int n) {
if (n <= 1) {
    System.out.print(n);
} else {
    mystery1(n / 2);
    System.out.print(", " + n);
}
}

为奇数提供此代码的原因。因为当我们划分它时它不会是整数。

4 个答案:

答案 0 :(得分:1)

没有神秘感,因为Java中整数除法的结果是整数。

答案 1 :(得分:1)

在Java或大多数其他编程语言中,当您将整数除以整数时,结果将是整数。如果出现十进制数,例如:

5/2=2.5

然后,小数点前的数字将被视为整数,并且将选择2。

如果您想要将整数显式转换为float或double,您可以使用以下任何转换:

(float) 3/2;

(double) n/2;

以上显式将其转换为小数。

答案 2 :(得分:0)

n / 2,这是一个整数除法,其中小数部分将被忽略。

System.out.println(3/2); // prints 1
System.out.println(3.0/2); // prints 1.5
System.out.println(3/2.0); // prints 1.5
System.out.println(3.0/2.0); // prints 1.5

答案 3 :(得分:0)

Param将舍入为int,例如,如果param为5,则下一次调用该函数将使用param 2