嗨我正在项目Euler中进行Collatz序列问题(问题14).我的代码适用于低于100000的数字,但是数字越大,我的堆栈溢出错误.
有没有办法可以重新计算代码以使用尾递归,或防止堆栈溢出.代码如下:
import java.util.*;
public class v4
{
// use a HashMap to store computed number,and chain size
static HashMap
最佳答案
你的问题不是堆栈的大小(你已经记住了值),但是
>序列中某些数字的大小,和
> 32位整数的上限.
暗示:
public static int seqCount(int n)
{
if(hm.get(n) != null) {
return hm.get(n);
}
if (n < 1) {
// this should never happen,right? ;)
} ...
...
这应该是足够的:)
附:你会在很多项目的euler问题中遇到对BigNums的需求……