我写了递归方法来更改基础,但似乎无法获得交互的解决方案。我的递归方法如下所示:

public static String baseR(int y, int x){
    if (y<x) {
        return new String(""+y);
    } else {
        return new String (baseR(y/x,x)+("" +(y%x)));
    }
}


到目前为止,我的迭代解决方案看起来像这样:

public static String base(int y,int x){
    int remainder = 0;

    while(y!=0){
        y=y/x;
        remainder=y%x;
    }

    return new String(y+(""+ remainder));
}


他们不会打印出相同的东西,我尝试了很多不同的方法而没有成功,有人能指点一下吗?

最佳答案

每次进入while循环时,remainder的值都会被覆盖。您应在覆盖前“使用” remainder的现有值。

另外,在用商数覆盖y的值之前,应计算余数的值。

public static String base(int y,int x){
    int remainder = 0;
    String value = "";
    while(y!=0){
        remainder=y%x;
        value= remainder + value;
        y=y/x;

    }

    return value;
}

关于java - 如何编写一种方法以任何递归形式返回数字的字符串表示形式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33764042/

10-09 06:51