题目描述为,现在有一个人,需要到达m阶的楼梯,这个人可以选择一次迈一步,或者一次迈两步,问:在到达目的地之前,会有几种方式到达目的地?(注意:比如要到达第4层,那么可以有1 1 2 或者2 1 1这些都可以看做是不一样的)
题目很简单,需要做的是递归分治,每一次的前进都可以有两种选择,选择迈两步或者迈一步,递归边界是m为0或者是m<0,而且方法种数是根据迈一步和迈两步之和求出来的。
#include <iostream>
using namespace std;
int Stairs(int m)
{
if(m==0)
{
return 1;
}
else if(m<0)
{
return 0;
}
return Stairs(m-1)+Stairs(m-2);
}
int main()
{
ios::sync_with_stdio(false);
int t;cin>>t;
while(t--)
{
int n;cin>>n;
int ans=Stairs(n);
cout<<ans<<'\n';
}
return 0;
}