斐波那契数列的表达式:
F(1)=1 F(2)=1
F(n)=F(n-1)+F(n-2) (n>2)
递归算法:时间复杂度O(2^n)
int recursive_method(int n)
{
if (n == 1 || n == 2)
return 1;
else
return recursive_method(n - 1) + recursive_method(n - 2);
}
非递归算法:时间复杂度O(n)
int non_recursive_method(int n)
{
int p = 1;
int q = 1;
int tmp;
if (n == 1 || n == 2)
return 1;
else{
for(int i = 3; i < n; i++)
{
tmp = p;//本次循环的F(n-2)
p = q; //p用来存储F(n-1),下一次循环就变成了F(n-2)
q = tmp + q; //F(n)=F(n-1)+F(n-2)
}
return q; //q储存的为最新的F(n)
}
}