以下来自百度百科:斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=2, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。
代码如下:
package com.jandmin.demo.leetcode;
import com.alibaba.fastjson.JSONObject;
/**
* @description: 斐波那契数列
* 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,
* 故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,
* 斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=2, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
* 在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用
* @author: JandMin
* @create: 2019-06-18 09:12
**/
public class FibonacciSequence {
public static void main(String[] args) {
int n = 10;
// 获取第n项数
long start = System.currentTimeMillis();
int num = getSequenceNum(n);
System.out.print(num);
System.out.println(" --> 耗时:" + (System.currentTimeMillis() - start) + " ms ");
// 获取前n项集合
start = System.currentTimeMillis();
int[] array = getSequence(n);
System.out.print(JSONObject.toJSONString(array));
System.out.println(" --> 耗时:" + (System.currentTimeMillis() - start) + " ms ");
start = System.currentTimeMillis();
int[] sequence = getFibonacciSequence(n);
System.out.print(JSONObject.toJSONString(sequence));
System.out.println(" --> 耗时:" + (System.currentTimeMillis() - start) + " ms ");
}
/**
* @Description: 获取前n项的数列
* @Date: 2019/6/26
* @param n
* @return: int[]
*/
private static int[] getFibonacciSequence(int n) {
int[] array = new int[n];
for(int i=0; i<n; i++){
if(i <= 1){
array[i] = 1;
} else {
array[i] = array[i-1] + array[i-2];
}
}
return array;
}
/**
* @Description: 获取前n项的数列
* @Date: 2019/6/26
* @param n
* @return: int[]
*/
private static int[] getSequence(int n) {
int[] array = new int[n];
for(int i=0; i<n; i++){
array[i] = getSequenceNum(i+1);
}
return array;
}
/**
* @Description: 返回第n项的值
* @Date: 2019/6/26
* @param n
* @return: int
*/
private static int getSequenceNum(int n) {
if(n <= 2){
return 1;
}
return getSequenceNum(n-1) + getSequenceNum(n-2);
}
}
输出结果如下:
55 --> 耗时:0 ms
[1,1,2,3,5,8,13,21,34,55] --> 耗时:157 ms
[1,1,2,3,5,8,13,21,34,55] --> 耗时:0 ms