我希望看到的结果:例如 分区(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));
}
答案 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}}