int climbStairs(int n) {
/*
int res=0;
if(n%2==0)
{
for(int i=n/2;i<=n;i++)
{
res+=combinatorial_num(i,n-i);
}
}
else
{
for(int j=n/2+1;j<=n;j++)
{
res+=combinatorial_num(j,n-j);
}
}
return res;
}
int combinatorial_num(int n,int m)
{
if(m==0)
{
return 1;
}
else{
if(m>n/2)
{
m=n-m;
}
int temp=m;
long long res=1;
for(int i=n-m+1;i<=n;i++)
{
res*=i;
if(temp>0&&res%temp==0)
{
res=res/temp;
temp=temp-1;
}
}
long long div=1;
if(temp>0){
for(int j=1;j<=temp;j++)
{
div*=j;
}
}
return res/div;
}
*/
if(n<4)return n;
int a=2;
int b=3;
int c=5;
for(int i=5;i<=n;i++)
{
a=c;
c=a+b;
b=a;
}
return c;
/*
int res=0;
if(n%2==0)
{
for(int i=n/2;i<=n;i++)
{
res+=combinatorial_num(i,n-i);
}
}
else
{
for(int j=n/2+1;j<=n;j++)
{
res+=combinatorial_num(j,n-j);
}
}
return res;
}
int combinatorial_num(int n,int m)
{
if(m==0)
{
return 1;
}
else{
if(m>n/2)
{
m=n-m;
}
int temp=m;
long long res=1;
for(int i=n-m+1;i<=n;i++)
{
res*=i;
if(temp>0&&res%temp==0)
{
res=res/temp;
temp=temp-1;
}
}
long long div=1;
if(temp>0){
for(int j=1;j<=temp;j++)
{
div*=j;
}
}
return res/div;
}
*/
if(n<4)return n;
int a=2;
int b=3;
int c=5;
for(int i=5;i<=n;i++)
{
a=c;
c=a+b;
b=a;
}
return c;
}
总结出规律之后就是fibonacci数列问题