我在写递归函数的代码,它把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);
}

10-05 19:10