欧拉计画14 Java
作者:互联网
我在Problem 14 on Project Euler上遇到了麻烦.我不明白为什么我的代码(Java)无法正常工作,我们将不胜感激.
public class Calculate {
public static void main(String[] args){
System.out.println(calc());
}
public static int calc(){
int max = 0;
int maxI = 0;
for (int i = 0; i < 1000000; i++){
if (seqLen(i) >= max){
max = seqLen(i);
maxI = i;
}
}
return maxI;
}
public static int seqLen(int seed){
if (seed <= 0) return 0;
if (seed == 1) return 1;
int len = 1;
if (seed % 2 == 0){
len += seqLen(seed/2);
}
else{
len += seqLen((3*seed)+1);
}
return len;
}
}
谢谢!
解决方法:
您的int变量溢出.
在该计算中(使用蛮力方法时)出现的最大数量为56991483520.
Java的int最大值为2 ^ 31-1 == 2147483647,显然较小.
因此,将变量等更改为使用较长时间.此处的最大值为2 ^ 63-1 == 9223372036854775807,将适合所有值.
标签:collatz,java,recursion 来源: https://codeday.me/bug/20191120/2045550.html