我遇到了一个语法错误,即使搜索也无法弄清楚。
问题出在第12行,我一直试图使用递归。
完整错误是:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error on token ")", Statement expected after this token
at Problem_14.main(Problem_14.java:12)
代码是:
import java.util.HashMap;
import java.util.Map;
public class Problem_14 {
public static long sequence(long o) {
long n = 0;
if (o % 2 == 0) n = o/2; sequence(n);
if (o % 2 != 0) n = 3*o + 1; sequence(n);
return n;
}
public static void main(String[] args) {
Map<String, Long> chain = new HashMap<String, Long>();
//Iterative sequence
//n → n/2 (n is even)
//n → 3n + 1 (n is odd)
for (int i = 1; i < 1000000; i++) {
chain.put(String.valueOf(i), sequence(i));
}
}
}
我已经完成了所有建议但无济于事。
答案 0 :(得分:1)
无论如何,这看起来并不正确。不该&#39; T:
if (o % 2 == 0) n = o/2; sequence(n);
是
if (o % 2 == 0) { n = o/2; sequence(n); }
答案 1 :(得分:1)
您似乎没有使用正确的编辑器。像→
这样的符号通常不会用在源文件中。尝试以UTF-8解码保存文件,或者更好的是,使用适当的EDI,如Eclipse。
//n → n/2 (n is even)
//n → 3n + 1 (n is odd)
答案 2 :(得分:0)
当你写一行时,你必须非常小心你的牙套。你编写它的方式,只有每个if的第一个语句实际上被认为是then块的一部分。我建议改为:
if (o % 2 == 0)
{
n = o/2;
sequence(n);
}
if (o % 2 != 0)
{
n = 3*o + 1;
sequence(n);
}