#include<iostream>
using namespace std;
int Fib(int n)
{
int num1=1;
int num2=1;
int temp=0;
if(n<3)
return 1;
else{
for(int i=0;i<n-2;i++)
{
temp=num1+num2;
num1=num2;
num2=temp;
}
return temp;
}
}
int main()
{
int n;
cin>>n;
cout<<Fib(n);
return 0;
}
第一种不用递归的
#include<iostream>
using namespace std;
int fib(int n){
if(n==1||n==2)
return 1;
else{
return fib(n-1)+fib(n-2);
}
}
int main(){
int n;
cin>>n;
cout<<fib(n);
return 0;
}
用递归
区别在于,是不是重复算了
也许是复杂度的问题
像5
递归就是
1
1 1
1 1 2
1 1 2 3
1 1 2 3 5
算了五遍前面有重复的
而不递归的一个数只算了一遍