题目描述:
有N级台阶,上楼可以一步上一阶,也可以一步上二阶。编一递归程序,计算共有多少种不同走法?
输入:
N≤40
输出:
答案
样例输入:
3
样例输出:
3
这道题严格意义上说应该不是一道DP题,而就是一个简单的递归,只要写出递归式就行。
解释一下递归式:对于当前的这个台阶,前一步有可能是走一步,也有可能是走两步上来的,所以f[i-1]+f[i-2];就是这个意思,下面给代码:
#include<cstdio> #include<cstdlib> #include<iostream> using namespace std; int f[41], a; int main() { scanf("%d",&a); f[1]=1; f[2]=2; for(int i=3;i<=a;i++) f[i]=f[i-1]+f[i-2]; printf("%d ",f[a]); return 0; }