Hellstone递归在Java中不起作用
我正试图编写一个简单的Java程序来使用递归计算冰雹序列。冰雹序列基本上是:取一个给定的整数n-如果是偶数,序列中的下一个整数是n/2,如果是奇数,序列中的下一个整数是n*3+1。我试图返回一个字符串,每个数字用逗号分隔,但我的算法不起作用。有人能解释一下原因吗?谢谢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 +
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如果你打算用它来表示大量的数字,您应该查看以避免堆栈溢出。