递归对数以形式=(2)^ n找到最高整数(n),最接近另一个整数x

时间:2017-03-02 00:48:34

标签: java recursion

我希望看到的结果:例如 分区(603 = 1 + 2 + 8 + 16 + 64 + 512) 正如你所看到的,它是2的幂。我似乎无法弄清楚什么是错的。

    static String partition (int n){
            int a=0;
            if (n<=1)
                return String.valueOf(n);
            while ((int)Math.pow(2, a)<=n)
                a++;

            return partition(n-((int)Math.pow(2, a)))+ 
            ....."+"+ String.valueOf(Math.pow(2, a));
    }

1 个答案:

答案 0 :(得分:1)

static String partition (int n)
{
            int a=0;
            if (n<=1)
                return String.valueOf(n);
            while ((int)Math.pow(2, a)<=n)
                a++;

            return partition(n-((int)Math.pow(2, a-1)))+ 
            ....."+"+ String.valueOf(Math.pow(2, a-1));
}

我在回复部分已将a更改为a-1。它会起作用,因为一旦pow(2,a)大于n,我们应该使用a-1而不是a,因为pow(2,a-1)是2的最大幂,而不是n 1}}