斐波那契数列问题

看到一些递归题目,觉得很有意思,记录下来,以备查询。

斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……

在数学上,斐波纳契数列被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。

 1 package com.delon.fibonacci;
 2 
 3 public class Fibonacci {
 4 
 5     //用递归求第10个数,它等于前2数之和,如{1,1,2,3,5}
 6     //得到递归式为f(n)=f(n-1)+f(n-2),终止条件为f(0)=1, f(1)=1。求的数为f(9)。
 7     //1,1,2,3,5,8,13
 8     //F(0)=0
 9     //F(1)=1
10     //F(2)=1
11     //F(3)=F(2)+F(1)=1+1=2
12     
13     //递归实现方式
14     public int fibonacciRecursion(int n){
15         //if(n<=2)
16         if (n==1||n==2){
17             return 1;
18         }else{
19             return fibonacciRecursion(n-1)+fibonacciRecursion(n-2);
20         }
21     }
22     
23     //递推实现方式
24     public int fibonacciNormal(int n){
25         //if(n<=2)
26         if(n==1||n==2){
27             return 1;
28         }
29         int a1=1;
30         int a2=1;
31         int temp = 0;
32         
33         for(int i=1;i<n-1;i++){
34             temp = a1+a2;
35             a1=a2;
36             a2=temp;
37         }
38         return temp;
39     }
40     
41     
42     public static void main(String[] args) {
43         // TODO Auto-generated method stub
44         Fibonacci f = new Fibonacci();
45         System.out.print("normal:"+f.fibonacciNormal(7)+"\n");
46         System.out.print("recursion:"+f.fibonacciRecursion(7));
47     }
48 
49 }

 

posted @ 2014-07-30 15:36  疲惫的豆豆  阅读(363)  评论(0编辑  收藏  举报