小明爬楼梯,已知他每次只能走一级或者两级台阶,要求实现递归函数waysOfClimbing(int n),功能为:
输入楼梯的级数n,输出一共有多少不同的走法数。
例:假设楼梯一共有3级,他可以每次都走一级,即1 1 1,或者第一次走一级,第二次走两级,即1 2,也可以第一次走两级,第二次走一级,即2 1,一共3种方法。提示:小明的最后一步只有两种走法,走一级或走两级。
样例输入:3
样例输出:3
#include <iostream>
#include <math.h>
using namespace std;
int climbstairs(int n)
{
int a[10001]={0};
int i;
a[0]=0;
a[1]=1;
a[2]=2;
if(n>10000)
{
return 0;
}
for(i=3;i<=n;++i)
{
a[i]=a[i-1]+a[i-2];
}
return a[n];
}
int main()
{
int n;
cin>>n;
cout<<climbstairs(n)<<endl;
return 0;
}
//使用递归函数
#include<iostream>
using namespace std;
int climbstairs(int n)
{
if(n==1||n==2)
{
return n;
}
else
{
return climbstairs(n-1)+climbstairs(n-2);
}
}
int main()
{
int n,res=0;
cin>>n;
res=climbstairs(n);
cout<<res;
}
本文探讨了小明爬楼梯的算法问题,通过两种方法实现:动态规划和递归。介绍了如何计算不同走法的数量,并提供了完整的C++代码示例。
3015

被折叠的 条评论
为什么被折叠?



