查找斐波纳契数列中第 N 个数。
所谓的斐波纳契数列是指:
前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
实现两种方式:
1。递归:实现相对简单,但递归运行效率低,产生的时间复杂度为指数阶O(2^n),即2的n次方;
public class Solution {
/**
* @param n: an integer
* @return: an ineger f(n)
*/
public int fibonacci(int n) {
// write your code here
if(n==1){
return 0;
}
if(n==2){
return 1;
}
return fibonacci(n-1)+fibonacci(n-2);
}
}
2。非递归:运用数组计算,避免无限递归;产生的时间复杂度为线性阶O(n).;
public class Solution {
/**
* @param n: an integer
* @return: an ineger f(n)
*/
public int fibonacci(int n) {
// write your code here
if(n==1){
return 0;
}
if(n==2){
return 1;
}
int[] ary =new int[n];
ary[0]=0;
ary[1]=1;
for(int i=3;i<=n;i++){
ary[i-1]=ary[i-2]+ary[i-3];
}
return ary[n-1];
}
}