《2017年11月29日》【连续050天】
标题:递归思想在问题分解上的应用(爬楼梯);
内容:用递归将问题分解为规模更小的子问题进行求解;
例题:爬楼梯,树老师爬楼梯,他可以每次走1级或者2级,输出楼梯的级数,求不同的走法数;
输入包含若干行,每行包含一个正整数N,代表楼梯级数,1<=N<=30;
输出不同的走法数,每一行输入对应一行;
解析:
n级台阶的走法=(先走一级后,n-1级台阶的走法)+(先走两级后,n-2级台阶的走法)
f(n)=f(n-1)+f(n-2);
边界条件:n=3,返回3;n=2,返回2;
int stairs(int n)
{
if(n==2)return 2;
if(n==1)return 1;
return stairs(n-1)+stairs(n-2);
}
int main()
{
int N;
while(cin>>N){
cout<<stairs(N)<<endl;
}
return 0;
}
明日计划:复习;