关闭

剑指offer_09 斐波那契数列

96人阅读 评论(0) 收藏 举报
分类:
    写一个函数,输入n,求斐波那契数列的第n项。
    思路: 递归 、 顺序求 、公式。 
    递归:重复的节点数会随着n的增大而急剧增加,这意味着计算量会随着n的增大而急剧增大。事实上,用递归的方法计算的时间复杂度是以n的指数的方式递增的。
    顺序:从下往上计算,首先计算f(0)和f(1)算出f(2),再根据f(1)和f(2)算出f(3)……依次类推就可以算出第n项了。很容易理解,这种思路的时间复杂度为O(n)。 
    公式:第三种方法把求斐波那契数列转换成求矩阵的乘方,是一种很有创意的算法。虽然我们可以哟个O(logn)求的矩阵的n次方,但由于隐含的时间常熟较大,很少会有软件采用这种算法,另外,实现这种算法的代码也交复杂,不太适用于面试。

这里写图片描述
代码:
递归:
这里写图片描述
顺序:

 public long fibonacci(int n){  
        long result =0;  
        long preOne = 1;  
        long preTwo = 0;  
        if( n == 0){  
            return preTwo;  
        }  
        if(n == 1){  
            return preOne;  
        }  
        for(int i = 2;i<= n ;i++){  
            result = preOne+preTwo;  
            preTwo = preOne;  
            preOne = result;  
        }  
        return result;  
    }  
    public static void main(String[] args){  
        E09Fibonacci fabonacci = new E09Fibonacci();  
        System.out.println(fabonacci.fibonacci(10));  
    }  
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5238次
    • 积分:317
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:18篇
    • 译文:0篇
    • 评论:0条
    文章分类