这是我为hailstone序列编写的代码,但我不能让它返回我要求的结果,这是它的指令。我觉得我的主要问题是知道在哪里以及如何保存计算的数字。
For example, nextHailstone(1) should return "1 " and nextHailstone(5)
* should return "5 16 8 4 2 1 ".
这是我的代码,我绝望,我得到8 4 2 1 1而不是5 16 8 4 2 1
public static String hailstones(int n) {
String newNum = " ";
if (n == 1)
{
return newNum = Integer.toString(n)+" ";
}
else
{
while (n != 1 )
{
if (n% 2 == 0)
{
n = n/2;
newNum = newNum + " " + n;
}
else
{
n = n*3 + 1 ;
newNum = newNum + " " + n;
}
}
}
return newNum = newNum + " "+ Integer.toString(n);
}
答案 0 :(得分:1)
您的代码需要一些重新排序和简化。我建议:
public static String hailstones(int n) {
String result = "";
while (n != 1) {
result += Integer.toString(n) + " ";
if (n % 2 == 0) {
n /= 2;
} else {
n = n * 3 + 1;
}
}
result += "1";
return result;
}