非递归实现
/**
* 斐波那契数列
* 特点:第三个数开始,每个数等于前两个的和
* 数列:1 1 2 3 5 8 13 21。。。
*/
private int fibo1(int n) {
//以非递归方法实现
//时间复杂度:O(n)
//输入总数:
int a = 1;
int b = 1;
if(n == 0 || n == 1) {
return n;
}
for(int i = 2; i < n; i ++) {
int temp = a;
a = b;
b = a + temp;
}
return b;
}
递归实现
private int fibo2(int f) {
//递归方式
//时间复杂度:O(2^n)
if(f == 0 || f == 1) {
return f;
}else {
return fibo2(f - 1) + fibo2(f-2);
}
}
递归方式,虽然代码简洁,但是由于计算一个数,要把前面的再次计算一般,所以计算次数是呈指数增长,时间复杂度是0(2^n),相比非递归的时间复杂度O(n),要高得多。