斐波那契数列
1.使用递归 时间复杂度为O(n)
#include <iostream>
int F[105];//储存之前的数据
int fib(int n)
{
if(n<=2) return F[n]=1;
if( F[n] ) return F[n]; //使用记忆化搜索来降低实践复杂度
return F[ n ] = fib(n-1) + fib(n-2);
}
int main()
{
int n;
std::cin >> n;
std::cout << fib(n);
return 0;
}
2.使用循环 时间复杂度为O(n),使用轮换代替。
#include <iostream>
int main()
{
int a=1,b=1,c,n;
std::cin>>n;
for(int i=2;i<n;i++)
{
if(n<=2)
{
std::cout<<1;
return 0;
}
else
{
c=a+b;
a=b;
b=c;
}
}
std::cout<<c;
return 0;
}