【发布时间】:2014-01-09 17:57:12
【问题描述】:
我正在尝试完成Project Euler question 并尝试执行递归解决方案,但我收到堆栈溢出错误并且似乎无法弄清楚原因。
任何帮助都会很棒。
谢谢
public class Collatz {
public static void main(String[] args) {
List<Integer> length = new ArrayList<Integer>();
for(int i = 13; i < 1000000; i++){
length.add(collat(i, 0));
}
}
public static int collat(int x, int c){
if(x == 1){
return c;
}
if(x % 2 == 0){
return collat(x/2, c + 1);
}else{
return collat((3 * x) + 1, c + 1);
}
}
}
【问题讨论】:
-
欧拉是哪个项目?
-
试试这里发布的解决方案stackoverflow.com/questions/860550/…
-
您是否尝试过使用调试器查看错误发生时
i是什么? -
@HotLicks:该异常仅表示超出了固定堆栈大小。它并不表示存在无限递归。事实上,没有。对于这个 Project Euler 问题中的所有样本,已知 Collatz 序列是有限的。
-
@HotLicks:怎么没有无限递归这种东西?你觉得
void foo(void) { foo(); }是做什么的?