斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
Java代码实现如下:
public class Demo {
// 递归方法
public static int fib1(int n) {
if (n <= 1)
return n;
return fib1(n - 1) + fib1(n - 2);
}
// 非递归方法
public static long fib2(int n) {
if (n <= 1)
return n;
long one = 1;
long two = 1;
for (int i = 1; i < n - 1; i++) {
long sum = one + two;
one = two;
two = sum;
}
return two;
}
//打印结果
public static void main(String[] args) {
System.out.println(fib1(6));
System.out.println(fib2(6));
}
}
时间复杂度:
- 递归方法:O()
- 非递归方法:O(n)