题目描述:台阶总共有n级,一次上1级或者上2级。总共有多少种走法?
#include <stdio.h>
int step(int n){
if(1==n||2==n){
return n;
}
return step(n-1)+step(n-2);
}
int main(){
int n;
scanf("%d",&n);
printf("step(%d)=%d",n,step(n));
return 0;
}
解析:
若总共只有一级台阶,则只能上1级,一共只有一种解法。
若总共只有二级台阶,则有两种解法,一次上2级,一次上一级分两次上(1+1),一共两种解法
若是其它台阶数则step(n-1)+step(n-2);图示如下
假设台阶数n为3,有两种可能,其一是人站在step(1)准备走两级,其二是人站在step(2)准备走一级,所以step(3)=step(2)+step(1);
假设台阶数n为4,有两种可能,其一是人站在step(2)准备走两级,其二是人站在step(3)准备走一级,所以step(4)=step(3)+step(2);其中step(3)=step(2)+step(1);以此类推step(5)