【题目】求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 }
时间: 2024-10-12 13:38:48