YTU-3127.递归——爬楼梯

这篇博客介绍了树老师通过递归方法解决爬楼梯问题,问题本质是斐波那契数列。给定楼梯级数N,每次可以走1级或2级,递归公式为第N级的走法等于第N-1级和第N-2级的走法之和。例如,楼梯有3级时有3种走法。博客提供了输入输出示例,并给出了具体的递归代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description
树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数, 求不同的走法数
例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一 级,第二次走两级,也可以第一次走两级,第二次走一级,一 共3种方法。
Input
输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 <= N <= 30输出不同的走法数,每一行输入对应一行
Output
不同的走法数,每一行输入对应一行输出
Sample Input
5
8
10
Sample Output
8
34
89

由题目不难看出这是一个斐波那契数列。比如有10阶楼梯,那么第10阶可以由第8层和第9层到达,那么 第10阶的走法 = 第9阶的走法 + 第8阶的走法。(仔细想想不难想明白的吧。)可以在纸上模拟或者先想想第3层的走法。先把大规模的重复问题缩小化,等小规模研究透彻后,把规律放大即可。

代码奉上:

#include<iostream>
#include<cstdio>
using namespace std;
int loop(int m)
{
    if(m==1)
        return 1;
    if(m==2)
        return 2;
    else
        return loop(m-1)+loop(m-2);
}
int main()
{
    int m;
    int sum=0;
    while(scanf("%d",&m)!=EOF)
    {
        sum=loop(m);
        printf("%d\n",sum);
    }
    return 0;
}

如有不明白的,欢迎评论。
——泪目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值