#P1375. [递归入门]下楼问题

[递归入门]下楼问题

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

递归