[递归入门]下楼问题
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
Description
从楼上走到楼下共有h个台阶,每一步有3种走法;走1个台阶;走2个台阶;走3个台阶。
请你计算出一共可走出多少种方案?
参考答案见提示。
Input Format
一个整数h(1 <= h <=10),代表台阶数。
Output Format
输出一个整数,为一共可走出的方案种数。
3
4
Hint
- 需要在递归的函数加上当前递归的状态(state)
- 递归出⼝为下到0层的情况
- 要考虑全⾯,⽐如state < 0 时的情况
#include <stdio.h>
int h = 0;
int ans = 0;
void down(int state){
// 递归出⼝
if(state == 0){
ans += 1;
return;
}
if(state < 0 ){
return;
}
else{
down(state-1); // 下1个台阶;
down(state-2); // 下1个台阶;
down(state-3); // 下3个台阶;
}
}
int main(){
scanf("%d",&h);
down(h);
printf("%d",ans);
return 0;
}
Source
递归