我正在创建计算Log base 2的递归方法。对于log *(1)=应该是0. log *(4)=应该是2.但是我的方法只打印出零而我不能&#39 ;弄清楚问题。有人帮我吗?
public static int logCalculator(double n) {
if (n == 1) {
return 0;
} else {
return 1 + logCalculator(n * n);
}
}
答案 0 :(得分:0)
这适用于基础2日志
public static int logCalculator1(double n) {
if (n < 2)
return 0;
return 1 + logCalculator1(n / 2);
}
注意:这将始终向下舍入,高数字是不准确的,此外你可以为所有基地这样做:
public static int logCalculator(int base, double n) {
if (base > 0) {
if (n < base) {
return 0;
} else {
return 1 + logCalculator(base, (int)(n / base));
}
} return 0;
}