斐波那契数列
斐波那契数列定义:F(n)=F(n-1)+F(n-2)(n>=2,F(0)=0,F(1)=1)
- java实现:
/**
* 递归,当n较大时时间复杂度极高,且有很多重复计算
*
* @param n
* @return
*/
public static long getFibonacciByRecursion(int n) throws Exception {
if (n == 1) return 0;
else if (n == 2) return 1;
else if (n > 2) {
return getFibonacciByRecursion(n - 1) + getFibonacciByRecursion(n - 2);
} else throw new Exception("非法输入值");
}
/**
* 循环,时间复杂度O(n)
*
* @param n
* @return
*/
public static long getFibonacciByCycle(int n) throws Exception {
if (n == 1) return 0;
else if (n == 2) return 1;
else if (n > 2) {
int k1=0,k2=1,ki=0;
for (int i=3;i<=n;i++){
ki = k1+k2;
k1=k2;
k2=ki;
}
return ki;
} else throw new Exception("非法输入值");
}
- 相关问题:
青蛙跳台阶问题;小矩形覆盖大矩形问题;
- 思想:
大问题拆分成小问题