递归:
利用二叉树进行计算,结点的数目就是算法执行的次数 ,考试的时候,时间复杂度用O(2^n)就可以了,实际上的时间复杂度为
,可以看一个知乎up主的解释
循环:
效率更高一点,O(n)
#include<iostream>
#include<cstdio>
//斐波那契数列
using namespace std;
int f(int n)//递归的方法
{
if(n==1||n==0) return 1;
else return f(n-1)+f(n-2);
}
int f2(int n)//循环的方法
{
int pre=1,next=1,result=0;
if(n==0||n==1)return 1;
else
{
for(int i=2;i<=n;i++)
{
result=pre+next;
pre=next;
next=result;
}
}
return result;
}
int main()
{
int n=0;
cin>>n;
for(int i=0;i<=n;i++)
cout<<f(i)<<" "<<f2(i)<<endl;
return 0;
}