最近在看算法方面的书籍,看到了一个很古老的问题-斐波那契数列,这个题目在大学的时候肯定接触过,我们还在考试中考过,但是只是局限于当时课本上的内容,并没有仔细的考虑过这个题目的实现方法,今天就来小小的探究一下
最常见的实现算法就是递归,这个问题也是一个很基础的递归算法实现的例子;
求斐波那契数列第n个元素java代码来实现递归的方法如下:
public static long FibonacciDemo1(long n) { if (n <= 0) return 0; if (n == 1) return 1; return FibonacciDemo1(n - 1) + FibonacciDemo1(n - 2); }
递归方法实现是看起来最简洁的,但是并不是最好的;因为要求第n个元素的数据,就要先求第n-1和第n-2,同理要分别求f(n-2)+f(n-3)和f(n-3)+f(n-4),会存在大量的冗余计算;
在n逐渐增大的同时,运算时间也在指数增加