Fibonacci Sequence in Java taking too long?

前端 未结 6 991
余生分开走
余生分开走 2021-01-13 18:44

I\'m trying to find the sum of the Fibonacci sequence in Java, but the run time is taking way too long (or is it suppose to?). This slows down anytime I use an integer past

6条回答
  •  攒了一身酷
    2021-01-13 19:13

    If you want to keep the recursive approach as is, cache results of calculation in an array or map. When you have calculated one Fibonacci for n, save that result. Then, in your method first see if you have the result and return that if you do. Otherwise, make the recursive call(s). Here's an example: recursion is still used and it is quite fast:

    public static Map cache = null;
    
    public static void main(String[] args) {
        cache = new HashMap();
        cache.put(0L,0L);
        cache.put(1L,1L);
        cache.put(2L,1L);
        Long sum=getSum(50L);
        System.out.println("Sum of Fibonacci Numbers is " + sum); 
    
    }
    
    static Long getSum(Long n){
        if (cache.containsKey(n)) { return cache.get(n); }
        else {
            Long fib = getSum(n-1) + getSum(n-2);
            cache.put(n, fib);
            return fib;
        }
    }
    

提交回复
热议问题