java递归对数,以查找形式=(2)^n中的最高整数(n),最接近另一个整数x
我期待看到的结果是:例如 分区(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 楼答案
我在返回部分将
a
改为a-1
。它将起作用,因为一旦pow(2,a)
大于n
,我们应该使用a-1
而不是a
,因为pow(2,a-1)
是小于n
的2的最大幂