1.递归求解:
int fib(int n){
if(n == 1 || n ==0){
return 1;
}else{
return fib(n-1)+fib(n-2);
}
}
时间复杂度解法:
所以我们可以利用特征方程求解来得出此时间复杂度
fib(n) = fib(n-1) + fib(n-2)特征方程为:1 = x + x*x
解为:p = (1+√5)/2,q = (1-√5)/2
带入后可知其时间复杂度为O(n*n)
2.非递归求解:
int fib2(int n){
int a,b,c;
a = 1;
b = 1;
c = 0;
if(n == 0 || n == 1){
return 1;
}
for(int i =2;i<=n;i++){
c = a + b;
a = b;
b = c;
}
return c;
}
易知此时间复杂度为O(n)