计算log base 2递归

时间:2016-05-06 19:39:50

标签: java

我正在创建计算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);
    }
}

1 个答案:

答案 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;
      }