通过递归java的fibonacci系列

是否可以编写带有递归的斐波那契数列程序,该程序可以返回较大的值(例如1000或更大),例如Integer.MAX_VALUE / 4?我只想了解在这种情况下如何处理stackoverflow错误?

在下面尝试过,但不起作用:

import java.util.HashMap;
import java.util.Map;

public class FibonacciSeries 
{
    private Map<Integer, Long> valueMap = new HashMap<>();
    private long fibonacci(int n)
    {
        if(n <= 0)
        {
           return 0;
        }

        if(n == 1 || n == 2)
        {
            return 1;
        }
        if(valueMap.get(n) != null)
        {
            return valueMap.get(n);
        }
        long out = fibonacci(n - 1) + fibonacci(n - 2);
        valueMap.put(n, out);
        return out;
    }

public static void main(String[] args) {
    long out = new FibonacciSeries().fibonacci(10000);
    System.out.println(out);
}

}
评论