有一个10阶楼梯,每步可以上1阶或2阶,试打印出所有走法
剖析问题:当从第一阶开始走,可以有两种走法,到第二层或者第三层,第二层有两种走法,到第三层或者第四层......直到第十层结束
#include<iostream>
using namespace std;
int array[15], ans=0;// array用来记录每一步走的哪一层阶梯,ans用来记录一共多少种方法
void goUpstairs(int pos,int num){//pos代表当前位置,num代表第几步行动
array[num] = pos;
if(pos==10){
ans += 1;
for(int i = 0; i <= num; ++i){
printf("第%d步行动 ",num);
cout<<array[i]<<endl;
}
cout<<endl;
return;
}
for(int i = 0; i < 2; ++i){
if(pos+i+1 <= 10) goUpstairs(pos+i+1, num+1);
}
}
int main(){
goUpstairs(0, 0);
cout<<"一共"<<ans<<"种走法"<<endl;
return 0;
}