[递归入门]下楼问题
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
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
递归