大枣都有什么牌子:悲波那契数列:它的第1项和第2项均为1以后各项为其前两项之和.试编写出计算Fib(n)的非递归算法

来源:百度文库 编辑:高考问答 时间:2024/05/10 08:40:54
悲波那契数列的定义为它的第1项和第2项均为1以后各项为其前两项之和.悲波契数列第n项用Fib(n)表示试编写出计算Fib(n)的非递归算法分析其时间复杂度
我想要的是数据结构的,望各位给一个答案!

给个C++的
#include <iostream>
int main(){
using namespace std;
int n,a=1,b=1,c;
cin<<n;
for (int i=3;i<=n;i++){
c=a+b;a=b;b=c;
}
cout<<b<<endl;
return 0;
}

时间复杂度O(n)

当n≥2时,
a(n+1)=Sn+n
an=S(n-1)+n-1
二者作差,得a(n+1)-an=an+1
所以a(n+1)+1=2(an+1)
所以,{an+1}是等比数列(但是只能在n≥2时成立,因此第一问不十分严密)
因此
an+1=2^(n-2)(a2+1)=3*2^(n-2)
所以
an=3*2^(n-2)-1