Hellstone递归在Java中不起作用

Hellstone递归在Java中不起作用,java,algorithm,recursion,Java,Algorithm,Recursion,我正试图编写一个简单的Java程序来使用递归计算冰雹序列。冰雹序列基本上是:取一个给定的整数n-如果是偶数,序列中的下一个整数是n/2,如果是奇数,序列中的下一个整数是n*3+1。我试图返回一个字符串,每个数字用逗号分隔,但我的算法不起作用。有人能解释一下原因吗?谢谢 public static String recursion (int n) { String s = ""; if (n != 1) { if (n % 2 == 0) return s +

我正试图编写一个简单的Java程序来使用递归计算冰雹序列。冰雹序列基本上是:取一个给定的整数n-如果是偶数,序列中的下一个整数是n/2,如果是奇数,序列中的下一个整数是n*3+1。我试图返回一个字符串,每个数字用逗号分隔,但我的算法不起作用。有人能解释一下原因吗?谢谢

public static String recursion (int n) {

    String s = "";

    if (n != 1) {
        if (n % 2 == 0) return s + String.valueOf(recursion(n / 2)) + ", ";
        else return s + String.valueOf(recursion((3 * n) + 1)) + ", ";
    }
    else return s + String.valueOf(1);
}

public static void main(String[] args) {
    System.out.println(recursion(435));
}

问题是,您没有打印实际数字
n
。将代码更改为:

public static String recursion (int n) {
    //set s to the number n
    String s = "" + n;

    if (n != 1) {
        //change position of the separator
        if (n % 2 == 0) return s + ", " + recursion(n / 2);
        //change position of the separator
        else return s + ", " + recursion((3 * n) + 1);
    }
    else return s;
}
编辑:
顺便说一句,您不需要
String.valueOf()
,因为结果已经是一个
字符串

什么不起作用?有例外吗?你得到了错误的结果吗?它只打印出了数字1和一堆逗号。比如:1、、、序列中的第一个数字应该是什么?n?第一个数字应该是n,是的。这是您想要的输出吗?435, 1306, 653, 1960, 980, 490, 245, 736, 368, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1@ThurmanSteele如果你认为答案有用,那么接受并投票(如果可能),而不是在评论中写上感谢。@ThurmanSteele如果你打算用它来表示大量的数字,您应该查看以避免堆栈溢出。