青蛙跳台阶问题的简单实现与理解(递归实现)

简介: 青蛙跳台阶问题的简单实现与理解(递归实现)

青蛙走n阶台阶,它可以选择跳一阶或者跳两阶,那么他一共有多少种跳法?

我们先来简单看一下这个问题,并简单实现一下青蛙跳

1节台阶:跳1

2阶台阶:(1)跳1 跳1 (2)跳2

3阶台阶:(1)跳1跳1跳1 (2)跳1跳2 (3)跳2跳1

4阶台阶: (1)跳1跳1跳1跳1 (2)跳1跳1跳2 (3)跳1跳2跳1 (4)跳2跳1跳1 (5)跳2跳2

、、、、、、

、、、、、、

n阶台阶:

我们发现后面情况越来越多,计算也越来越复杂,但是当我仔细思考后不难发现

1、关于跳台阶问题,无论怎样上台阶,最后一步都会剩下两种情况:1.还有一步 2.还有两步;

2、而当台阶数小于二时,跳台阶的方法就等于台阶数目;

3、换个思维我们只需要将台阶数全化为两个台阶,然后考虑两个台阶的情况;

4、那我们就可以用递归的方法进行实现,递归结束的条件就为只剩下两个台阶的时候

5、可以将该问题简单看为:前面所走 + 最后一步

       //我们先讨论最后一步,就非常简单,

       //然后又把前面所走看为:前前面所走 + 最后一步(为到达前面所走的最后一步)

       //依次进行,向后递,当台阶数小于2时,归;

代码实现如下,不考虑溢出:

#include <stdio.h>
//关于跳台阶问题,无论怎样上台阶,最后一步都会剩下两种情况:1.还有一步 2.还有两步;
//而当台阶数小于二时,跳台阶的方法就等于台阶数目;
//换个思维我们只需要将台阶数全化为两个台阶,然后考虑两个台阶的情况;
//那我们就可以用递归的方法进行实现,递归结束的条件就为只剩下两个台阶的时候;
int Fib(int n) {
    if (n <= 2) //递归的结束条件,当还之剩下两个台阶时
    {
        return n;
    }
    else {
        return Fib(n - 1) + Fib(n - 2);//两种情况,将跳台阶简单化,层层剥离,
        //可以将该问题简单看为:前面所走 + 最后一步
        //我们先讨论最后一步,就非常简单,
        //然后又把前面所走看为:前前面所走 + 最后一步(为到达前面所走的最后一步)
        //依次进行,向后递,当台阶数小于2时,归;
    }
}
int main() {
    int n = 0;
    scanf("%d", &n);
    int ret = Fib(n);
    printf("%d\n", ret);
    return 0;
}


以上是博主初学递归,对青蛙跳台阶问题自己的理解,若有描述不对的地方,欢迎大佬们评论区指正。


相关文章
|
分布式计算 NoSQL 大数据
maxcompute开发环境问题之删除字段报错如何解决
MaxCompute开发环境是指设置和配置用于开发MaxCompute项目的本地或云端环境;本合集将指导用户如何搭建和管理MaxCompute开发环境,包括工具安装、配置和调试技巧。
|
5月前
|
存储 监控 Shell
SkyWalking微服务监控部署与优化全攻略
综上所述,虽然SkyWalking的初始部署流程相对复杂,但通过一步步的准备和配置,可以充分发挥其作为可观测平台的强大功能,实现对微服务架构的高效监控和治理。尽管未亲临,心已向往。将一件事做到极致,便是天分的展现。
|
存储 人工智能 数据管理
如何借助AI技术为NAS注入新活力
【8月更文挑战第11天】文件存储NAS是高性能、可共享访问的分布式文件系统,支持弹性扩展与高可靠性。通过融合AI技术,NAS能在数据存储路径上实现最优规划,提升存储效率;借助AI自学习能力优化数据管理流程;并实现精准的数据共享,最大化数据价值。
如何借助AI技术为NAS注入新活力
|
人工智能 物联网 测试技术
使用PAI×LLaMA Factory 微调 Llama3 模型
本次教程介绍了如何使用PAI和LLaMA Factory框架,基于轻量化LoRA方法微调Llama-3模型,使其能够进行中文问答和角色扮演,同时通过验证集ROUGE分数和人工测试验证了微调的效果。在后续实践中,可以使用实际业务数据集,对模型进行微调,得到能够解决实际业务场景问题的本地领域大模型。
使用PAI×LLaMA Factory 微调 Llama3 模型
|
NoSQL Redis 索引
Redis 中ZSET数据类型命令使用及对应场景总结
Redis 中ZSET数据类型命令使用及对应场景总结
287 2
|
Java 测试技术
解决NullReferenceException异常的方法分析
解决NullReferenceException异常的方法分析
|
开发框架 人工智能 前端开发
【GitHub】github学生认证,在vscode中使用copilot的教程
【GitHub】github学生认证,在vscode中使用copilot的教程
3882 4
|
消息中间件 RocketMQ
RocketMQ极简入门-RocketMQ消息批量发送
批量发送消息能显著提高传递小消息的性能。限制是这些批量消息应该有相同的topic,而且不能是延时消息。此外,这一批消息的总大小不应超过4MB,如果超过可以有2种处理方案: 1.将消息进行切割成多个小于4M的内容进行发送 2.修改4M的限制改成更大 可以设置Producer的maxMessageSize属性 修改配置文件中的maxMessageSize属性
751 0
|
SQL Java 调度
xxl-job(分布式任务调度平台)的使用
xxl-job(分布式任务调度平台)的使用
658 0
|
C# C++ Windows
C#工程中输出类型转换以及程序运行后控制台窗口不退出设置
C#工程中输出类型转换以及程序运行后控制台窗口不退出设置
550 0
C#工程中输出类型转换以及程序运行后控制台窗口不退出设置