剑指offer_09 斐波那契数列

原创 2016年08月30日 20:42:21
    写一个函数,输入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));  
    }  
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

剑指Offer_面试题09_斐波那契数列

题目一:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。 解析:一直以来很多C语言教科书在讲递归函数的时候总会拿斐波那契数列作为例子。但是这不意味这Fibonacci的最合适的解法...

面试题09_斐波那契数列及其变种详解——剑指offer系列

题目描述: 写一个函数,输入n,求斐波那契数列的第n项。 解题思路: 这个题目很经典,但是要写好分析好与其相关的题目也不容易。后面介绍两个变形题目。 思路1:递归 递归的优点...

剑指offer-斐波那契数列

斐波那契数列                                        #include long long Fibonacci(unsigned int n...

剑指Offer面试题9(java版)斐波那契数列

题目一:写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列的定义如下: 1、效率很低效的解法,挑剔的面试官不会喜欢 很多C语言的教科书在讲述递归函数的时候,都户拿Fibonacci作为例子,因此...

九度剑指Offer面试题9:斐波那契数列(Java题解)

import java.util.Scanner; public class Main { public static void main(String args[]) { long[] fi...

剑指Offer----面试题九:斐波那契数列

题目: 写一个函数,输入n,求斐波那契数列(Fibonacci)的第n项,斐波那契数列的定义如下: 方法一: 第一种方法就是我们在学习C或者C++语言时接触到的递归调用,程序源代...

剑指Offer9:斐波那契数列

递归和循环递归实现方法代码简洁,但性能不如循环。 优先采用递归 !递归的缺点缺点1:递归由于是函数调用自身,而函数调用是有时间和空间的消耗的 每一次函数调用,都需要在内存栈中分配空间以保存参数、返...

剑指offer_面试题9_斐波那契数列

题目一:写出一个函数,输入n,求斐波那契数列的第n项。 题目二:一只青蛙一次可以跳上1级台阶,也可以跳上2级。请求青蛙上一个 n 级的台阶总共有多少种跳法。 第二个题目,其实就是第一个题目的意思。...

剑指Offer系列---(12)斐波那契数列

1.题目描述: 写一个函数,输入n,求斐波那(Fibonacci)数列的第n项。斐波那契数列的定义如下: 2.源代码: // Copyright (c) 2015年 skewrain. All ...

剑指Offer-斐波那契数列以及跳台阶问题

剑指Offer-斐波那契数列以及跳台阶问题斐波那契数列:1,1,2,3,5…… 规律:f(n) = f(n-1) + f(n-2) 题目描述: 输入一个整数n,请你输出斐波那契数列的第n项。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:剑指offer_09 斐波那契数列
举报原因:
原因补充:

(最多只允许输入30个字)