一开始没有考虑n=1和n=2的情况。
这道题跟斐波那契数列有关。
方法一(递推):
#include<iostream>
using namespace std;
int main()
{
// freopen("xxx.in","r",stdin);
// freopen("yyy.out","w",stdout);
int n;
int s1=1,s2=2,s3=0;
cin >> n;
if(n==1)
{
cout << 1;
return 0;
}
if(n==2)
{
cout << 2;
return 0;
}
for(int i=1;i<=n-2;i++)
{
s3=s2;
s2=s1+s2;
s1=s3;
}
cout << s2;
// fclose(stdin);
// fclose(stdout);
return 0;
}
方法2(递归):
#include<iostream>
using namespace std;
int f(int n)
{
if(n<=2)
return n;
return f(n-1)+f(n-2);
}
int main()
{
// freopen("xxx.in","r",stdin);
// freopen("yyy.out","w",stdout);
int n;
cin >> n;
if(n<=2)
{
cout << n;
return 0;
}
cout << f(n);
// fclose(stdin);
// fclose(stdout);
return 0;
}