我在写递归函数的代码,它把2的每一次幂从1打印到N,N是幂函数的参数。
Function : int powers(n)
目前我编写了以下代码:
int powers(int n) //here n=128
{
if(n==2)
{
System.out.print(n);
}
else if (n>2)
{
System.out.print(n +", ");
return powers(n/2);
}
System.out.println("");
return 0;
}
输出:128、64、32、16、8、4、2
期望值:2、4、8、16、32、64、128
最佳答案
由于函数的目的是打印2的幂,因此不需要返回值因此,您可以按如下方式重写函数:
int powers(int N) //here N=128
{
if(N==2){
System.out.print(N + ", ");
}
else if (N >2)
{
powers(N/2);
System.out.print(N + ", ");
}
System.out.println("");
return 0;
}
另外,要处理最后一个额外的逗号,可以返回上一步字符串并在函数外部打印。
String powers(int N) //here N=128
{
if(N==2){
return (N + "");
}
String prev = powers(N/2);
return (prev + ", " + N);
}