剑指offer编程题Java实现——面试题9斐波那契数列
题目:写一个函数,输入n,求斐波那契数列的第n项。
1 package Solution; 2 3 /** 4 * 剑指offer面试题9:斐波那契数列 5 * 题目:写一个函数,输入n,求斐波那契数列的第n项。 6 * 0, n=1 7 * 斐波那契数列定义如下:f(n)= 1, n=2 8 * f(n-1)+f(n-2), n>2 9 * @author GL 10 * 11 */ 12 public class No9Fibonacci { 13 14 public static void main(String[] args) { 15 System.out.println("第4项斐波那契数列的值为:"+fibonacci(4)); 16 } 17 18 /* 19 * 采用递归实现斐波那契数列生成函数,效率低 20 */ 21 public static int generateFibonacci(int n){ 22 if(n==0) 23 return 0; 24 if(n==1) 25 return 1; 26 return generateFibonacci(n-1)+generateFibonacci(n-2); 27 } 28 29 /* 30 * 采用循环实现斐波那契数列 31 * 存储数列中间项,求得结果 32 */ 33 public static int fibonacci(int n){ 34 int[] result={0,1}; 35 if(n<2) 36 return result[n]; 37 int fibNMinusOne=1; 38 int fibNMinusTwo=0; 39 int fibN=0; 40 for(int i=2;i<=n;i++){ 41 fibN=fibNMinusOne+fibNMinusTwo; 42 fibNMinusTwo=fibNMinusOne; 43 fibNMinusOne=fibN; 44 } 45 return fibN; 46 } 47 }