Project Euler #14 输出的输出不正确

Incorrect output for Project Euler #14 output

我正在尝试实现求解 Project Euler Problem #14 的算法,该算法要求在给定范围内找到输出最大 Collat​​z 猜想序列长度的数字。我的代码如下:

import java.util.ArrayList;
class Collatz {
    private static ArrayList<ArrayList<Long>> previousNums = new ArrayList();
    public static int seqLen(int x) {
        ArrayList<Long> colSeq = new ArrayList();
        long val = x;
        colSeq.add(val);
        while (val > 1) {
            if (val%2 == 0) {
                val/=2;
                if (val < previousNums.size()) /*used to check if index exists*/{
                    colSeq.addAll(previousNums.get((int)val));
                    break;
                }
                else colSeq.add(val);
            }
            else {
                val = 3*val + 1;
                if (val < previousNums.size()) {
                    colSeq.addAll(previousNums.get((int)val));
                    break;
                }
                else colSeq.add(val);
            }
        }
        previousNums.add(colSeq);
        return colSeq.size();
    }
    public static void main(String[] args) {
        int greatestNum = 0;
        long totalVal = 0;
        for (int i = 0; i<=1000000; i++) {
            int collatz = seqLen(i);
            if (collatz > totalVal) {}
            greatestNum = i;
            totalVal = collatz;
        }
        System.out.println(greatestNum + " " + totalVal);
    }
}

我得到的输出是

1000000 153

虽然这不是正确答案,但 153 是 100 万的正确序列长度。基于此,我可以假设我的 Collat​​z 猜想算法有效,但不是比较部分。但是,我真的找不到其他地方可以修改代码。有任何想法吗?谢谢,请原谅这可能是重复的(没有多少其他帖子有同样的问题)。

哇,仅仅是语法错误的问题。貌似没注意:

 if (collatz > totalVal) {}
            greatestNum = i;
            totalVal = collatz;

是的,没有用大括号括起代码。