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

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

青蛙走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;
}


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


相关文章
|
安全
选择最佳供应商:ERP系统的供应商选择与评估方法论
选择最佳供应商:ERP系统的供应商选择与评估方法论
1514 0
|
分布式计算 NoSQL 大数据
maxcompute开发环境问题之删除字段报错如何解决
MaxCompute开发环境是指设置和配置用于开发MaxCompute项目的本地或云端环境;本合集将指导用户如何搭建和管理MaxCompute开发环境,包括工具安装、配置和调试技巧。
|
存储 人工智能 数据管理
如何借助AI技术为NAS注入新活力
【8月更文挑战第11天】文件存储NAS是高性能、可共享访问的分布式文件系统,支持弹性扩展与高可靠性。通过融合AI技术,NAS能在数据存储路径上实现最优规划,提升存储效率;借助AI自学习能力优化数据管理流程;并实现精准的数据共享,最大化数据价值。
如何借助AI技术为NAS注入新活力
|
11月前
|
机器学习/深度学习 存储 人工智能
梯度累积的隐藏陷阱:Transformer库中梯度累积机制的缺陷与修正
在本地微调大规模语言模型时,由于GPU显存限制,通常采用梯度累积技术来模拟大批次训练。然而,实际研究表明,梯度累积方法在主流深度学习框架中会导致模型性能显著下降,尤其是在多GPU环境中。本文详细探讨了梯度累积的基本原理、应用场景及存在的问题,并通过实验验证了修正方案的有效性。研究指出,该问题可能在过去多年中一直存在且未被发现,影响了模型的训练效果。
804 4
梯度累积的隐藏陷阱:Transformer库中梯度累积机制的缺陷与修正
|
存储 算法 Java
【DFS(深度优先搜索)详解】看这一篇就够啦
本文介绍了深度优先搜索(DFS)算法及其应用。DFS从某个顶点出发,深入探索图的每条路径,直到无法前进为止,然后回溯。文章详细解释了DFS的基本思想,并通过示例图展示了其执行过程。此外,文中还探讨了三种枚举方式:指数型枚举、排列型枚举和组合型枚举,并提供了具体的代码实现。最后,文章通过几道练习题帮助读者更好地理解和应用DFS算法。
8786 19
【DFS(深度优先搜索)详解】看这一篇就够啦
|
NoSQL Redis 索引
Redis 中ZSET数据类型命令使用及对应场景总结
Redis 中ZSET数据类型命令使用及对应场景总结
241 2
|
机器学习/深度学习 人工智能 供应链
AI在各行业的具体应用与未来展望
人工智能(Artificial Intelligence, AI)作为一项颠覆性技术,正在逐步改变我们的生活和工作方式。从语音助手到自动驾驶汽车,AI的应用已经深入到各个领域。本文将详细探讨AI在不同行业中的具体应用,以及未来可能的发展方向。
3128 6
|
安全 数据安全/隐私保护 Python
【震撼揭秘】:密码大战公钥!解锁信息安全认证技术的惊天秘密与实战应用,带你领略数字世界的终极防线!
【8月更文挑战第20天】信息安全中,认证技术确保用户身份真实,本文对比基于口令认证与基于公钥基础设施(PKI)认证。前者简便但易受攻击,常需配合多因素认证加强安全性;后者利用数字证书及公/私钥机制,提供更高安全保障。随着技术演进,未来认证手段将更趋多元高效。
165 2
|
数据采集 Java API
使用阿里云接口(API)进行身份证实名认证
如今随着互联网产业的多元化发展,尤其是互联网金融,O2O,共享经济等新兴商业形式的兴起,企业对实名认证业务的数据形式和数据质量有了更高的需求。如今也衍生出身份证实名认证业务,通过接口将身份证号码、姓名上传至阿里云,再与全国公民身份信息系统进行匹配,判断信息的一致性。
15244 1
使用阿里云接口(API)进行身份证实名认证
|
Java 测试技术
解决NullReferenceException异常的方法分析
解决NullReferenceException异常的方法分析