剑指offer系列7--Fibonacci数列n项值

【题目】求Fibonacci的第n项。

【思路】第一种方法根据定义式直接用递归的方法,但是效率不高;

       第二种改进的方法如下;

 1 package com.exe2.offer;
 2 
 3 /**
 4  * 7【题目】求Fibonacci的第n项。
 5  *  【思路】第一种方法根据定义式直接用递归的方法,但是效率不高;
 6  *          第二种改进的方法如下;
 7  *          Fibonacci数列:0 1 1 2 3 5 8 13 21 34
 8  *          Fibonacci函数:n=0 f(n)=0
 9  *                n=1 f(n)=1
10  *                n>=2 f(n)=f(n-1)+f(n-2)
11  *          例:fibnfun=fibnOne+fibnTwo;
12  *                f(2)=f(1)   +f(0)
13  *                f(3)=f(2)   +f(1)
14  *                f(4)=f(3)   +f(2)
15  *          所以:  fibnTwo=fibnOne;
16                   fibnOne=fibnfun;
17  * @author WGS
18  *
19  */
20 public class Fibonacci {
21 
22     public int getNum(int n){
23         int fibnfun=0;
24         int fibnOne=1;
25         int fibnTwo=0;
26         if(n==0){
27             return 0;
28         }else if(n==1){
29             return 1;
30         }
31         
32         //n>=2
33         for(int i=2;i<=n;i++){
34             fibnfun=fibnOne+fibnTwo;
35             fibnTwo=fibnOne;
36             fibnOne=fibnfun;                    
37         }
38         return fibnfun;
39         
40     }
41     
42     public static void main(String[] args){
43         Fibonacci f=new Fibonacci();
44         int n=f.getNum(9);
45         System.out.println(n);
46     }
47     
48     
49     
50     
51     
52     
53     
54     
55     
56     
57     
58     
59     
60     
61 }
原文地址:https://www.cnblogs.com/noaman/p/5386927.html