假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
**注意:**给定 n 是一个正整数。
其实这个问题,可以用递归和动态规划解决,下面分别是两种实现方式:
- C++代码:
int stairs(int n){ if(n==1||n==0||n==2){ return n; } return stairs(n-1)+stairs(n-2); }
int stairs(int n){ if(n==1||n==0||n==2){ return n; } else{ int a=1; int b=2; int temp=0; for(int i=3;i<n+1;i++){ temp=a+b; a=b; b=temp; } return temp; } }