【C语言】青蛙跳台阶 —— 详解
一、问题描述
跳台阶_牛客题霸_牛客网 (nowcoder.com)

LCR 127. 跳跃训练 - 力扣(LeetCode)

二、解题思路
1、当 n = 1 时,一共只有一级台阶,那么显然青蛙这时就只有一种跳法

2、当 n = 2 时,一共有两级台阶,这时青蛙的跳法有两种

以此类推,通过这种思路来求解。该题要求的是青蛙从 0 ~ n 级台阶的所有跳法,我们可以假设跳上 n 级台阶一共有 f(n) 种跳法。从上面的图片我们可以知道青蛙的最后一步的跳法只有两种情况: 跳上 1 级或 2 级台阶。那就意味着如果青蛙选择跳 1 级台阶的跳法将与选择跳 2 级台阶时不相同:
- 当跳上 1 级台阶时: 还剩 n-1 个台阶,此情况共有 f(n-1) 种跳法;
- 当跳上 2 级台阶时: 还剩 n-2 个台阶,此情况共有 f(n-2) 种跳法。
可以得到 f(n) = f(n-1) + f(n-2) 。由此就可以不断递归下去,这与斐波那契数列的解题思路有异曲同工之处,唯一的不同在于起始数字不同。
- 青蛙跳台阶问题:f(0) = 1,f(1) = 1,f(2) = 2;
- 斐波那契数列问题:f(0)=0,f(1) = 1,f(2) = 1。

三、代码
#include <stdio.h>// 求n台阶青蛙的跳法
int frog_jump_step(int n)
{// 对特殊情况作处理if (n == 1){return 1;}if (n == 2){return 2;}// 递归调用return frog_jump_step(n - 1) + frog_jump_step(n - 2);
}
int main()
{int n = 0;scanf("%d", &n);int ways = frog_jump_step(n);printf("%d\n", ways);return 0;
}
四、扩展
跳台阶扩展问题_牛客题霸_牛客网 (nowcoder.com)

1、解题思路
(1)思路一
这里的青蛙比上面的青蛙更厉害一些,它一次可以跳 1 阶,2阶,3阶... ....。所以如果想要跳到第 n 个台阶,我们可以从第 1 个台阶跳上来,也可以从第 2 个台阶跳上来... ...,所以递推公式是:f(n) = f(n-1) + f(n-2) + ... ... + f(2) + f(1);
同样在跳到第 n-1 个台阶时,也可以列出下面这个公式:
f(n-1) = f(n-2) + ... ... + f(2) + f(1);
通过上面两个公式相减我们可以得到:f(n) = 2 * f(n-1)
(2)思路二
当然这里也可以用非递归的方式来实现:
f(1) = 1 = 2⁰
f(2) = 1 + f(1) = 2 = 2¹
f(3) = 1 + f(2) + f(1) = 4 = 2²
f(4) = 1 + f(3) + f(2) + f(1) = 8 = 2³
...
f(n) = 2⁽ⁿ⁻¹⁾
这里可以使用函数 pow(2,n -1),要记得加上头文件 <math.h>。也可以用 << 来表示。
2、代码
#include<stdio.h>int frog_jump_step(int n)
{if (n == 1){return 1;}return 2 * frog_jump_step(n - 1);
}int main()
{int n = 0;scanf("%d", &n);int way = frog_jump_step(n);printf("%d\n", way);return 0;
}
int frog_jump_step(int n)
{if (n == 1){return 1;}return 1 << (n-1);
}int main()
{int n = 0;scanf("%d", &n);int way = frog_jump_step(n);printf("%d\n", way);return 0;
}
相关文章:
【C语言】青蛙跳台阶 —— 详解
一、问题描述 跳台阶_牛客题霸_牛客网 (nowcoder.com) LCR 127. 跳跃训练 - 力扣(LeetCode) 二、解题思路 1、当 n 1 时,一共只有一级台阶,那么显然青蛙这时就只有一种跳法 2、当 n 2 时,一共有两级台阶ÿ…...
Java - 基本数据类型和封装类型
基本类型有默认值,而包装类型初始为null。然后再根据这两个特性进行分业务使用,在阿里巴巴的规范里所有的POJO类必须使用包装类型,而在本地变量推荐使用基本类型。 Java语言提供了八种基本类型。六种数字类型(四个整数型ÿ…...
day-63 代码随想录算法训练营(19) 图论 part 02
1020.飞地的数量 分析:求不跟边界接壤的陆地的数量 思路一:深度优先遍历 先从四个侧边找陆地,然后进行深度优先遍历,把所有接壤的陆地(1)全部转换成海洋(0) 深度优先遍历…...
SpringBoot的全局异常拦截
在 Spring Boot 中,可以通过使用 ControllerAdvice 注解和 ExceptionHandler 注解来实现全局异常拦截。 RestControllerAdvice RestControllerAdvice 是 Spring Framework 提供的注解,用于定义全局异常处理类,并且结合 ExceptionHandler 注…...
『力扣每日一题11』:转换成小写字母
一、题目 给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。 示例 1: 输入:s "Hello" 输出:"hello"示例 2: 输入:s "here" 输…...
复习Day07:链表part03:21. 合并两个有序链表、2. 两数相加
之前的blog链接:https://blog.csdn.net/weixin_43303286/article/details/131700482?spm1001.2014.3001.5501 我用的方法是在leetcode再过一遍例题,明显会的就复制粘贴,之前没写出来就重写,然后从拓展题目中找题目来写。辅以Lab…...
Ubuntu中启动HDFS后没有NameNode解决办法
关闭进程: stop-dfs.sh 格式化: hadoop namenode -format 出现报错信息: 23/10/03 22:27:04 WARN fs.FileUtil: Failed to delete file or dir [/usr/data/hadoop/tmp/dfs/name/current/fsimage_0000000000000000000.md5]: it still exi…...
AWS-Lambda之导入自定义包-pip包
参考文档: https://repost.aws/zh-Hans/knowledge-center/lambda-import-module-error-python https://blog.csdn.net/fxtxz2/article/details/112035627 简单来说,以 " alibabacloud_dyvmsapi20170525 " 包为例 ## 创建临时目录 mkdir /tmp cd ./tmp …...
MAC 如何解决GitHub下载速度慢的问题
说在前面 解决github下载速度慢的方法很多,本文主要介绍通过Git镜像的方式解决下载慢的问题。 主要步骤有:1、找到gitconfig文件, 2、通过git命令查看当前生效的config 配置 3、使用git config命令编辑并添加国内镜像源 1、gitconfig 文件在…...
Redis与分布式-哨兵模式
接上文 Redis与分布式-主从复制 1.哨兵模式 启动一个哨兵,只需要修改配置文件即可, sentinel monitor lbwnb 1247.0.0.1 6001 1先将所有服务关闭,然后修改配置文件,redis Master,redis Slave,redis Slave…...
创建型设计模式 原型模式 建造者模式 创建者模式对比
创建型设计模式 单例 工厂模式 看这一篇就够了_软工菜鸡的博客-CSDN博客 4.3 原型模式 4.3.1 概述 用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。 4.3.2 结构 原型模式包含如下角色: 抽象原型类:规定了…...
HTML详细基础(二)文件路径
目录 一.相对路径 二.绝对路径 三.超链接标签 四.锚点链接 首先,扩展一些HTML执行的原理: htmL(hypertext markup Language) 是一种规范(或者说是一种标准),它通过标记符(tag)来标记要显示…...
大数据-玩转数据-Flink 海量数据实时去重
一、海量数据实时去重说明 借助redis的Set,需要频繁连接Redis,如果数据量过大, 对redis的内存也是一种压力;使用Flink的MapState,如果数据量过大, 状态后端最好选择 RocksDBStateBackend; 使用布隆过滤器,…...
1.在vsCode上创建Hello,World
(1).编译器的安装配置 使用vsCode进行编写c语言,首先需要安装gcc编译器,可以自己去寻找资料或者gcc官网进行下载. 下载好后,将文件夹放入到自己指定的目录后,配置系统环境变量,将path指向编译器的bin目录 进入bin目录打开cmd,输入gcc -v,然后就会成功输出信息. (2).vsCode配…...
XrayGLM - 医学大模型
文章目录 关于 XrayGLM研究背景VisualGLM-6B 关于 XrayGLM XrayGLM: 首个会看胸部X光片的中文多模态医学大模型 | The first Chinese Medical Multimodal Model that Chest Radiographs Summarization. 基于VisualGLM-6B 微调 github : https://github.com/WangRongsheng/Xra…...
Hive 常见数据倾斜场景及解决方案(Map\Join\Reduce端)
目录 MapReduce流程简述a) Map倾斜b) Join倾斜c) Reduce倾斜 首先回顾一下MapReduce的流程 MapReduce流程简述 输入分片: MapReduce 作业开始时,输入数据被分割成多个分片,每个分片大小一般在 16MB 到 128MB 之间。这些分片会被分配给不同的…...
C++中的四种强制类型转换符详解
前 言 C 既支持 C 风格的类型转换,又有自己风格的类型转换。C 风格的转换格式很简单,但是有不少缺点: 转换太过随意,可以在任意类型之间转换。你可以把一个指向 const 对象的指针转换成指向非 const 对象的指针,把一…...
Windows电脑多开器的优缺点对比
Windows电脑多开器是一种能够让用户同时运行多个应用程序、游戏或者网页的软件工具。它的作用在于让用户能够更加高效地工作、学习或者娱乐。但是,这种软件也存在一些优劣势的对比。 优点: 提升工作效率。多开器可以让用户同时打开多个应用程序或者网页…...
Java笔记六(面向对象:类与对象)
面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据 抽象 三大特征:封装 继承 多态 从认识角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽…...
Git使用【中】
欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析3 目录 👉🏻分支管理分支概念git branch(查看/删除分…...
UE5项目GPU瓶颈卡顿?手把手教你用GPU Visualizer揪出渲染性能元凶
UE5项目GPU瓶颈卡顿?手把手教你用GPU Visualizer揪出渲染性能元凶 当你的UE5项目在真机测试时突然掉帧到30fps以下,而编辑器里明明运行流畅——这种"开发环境正常,实机表现崩盘"的困境,相信每个UE开发者都经历过。上周我…...
开源像素艺术生成器落地实操:像素幻梦在独立游戏开发中的应用
开源像素艺术生成器落地实操:像素幻梦在独立游戏开发中的应用 1. 像素幻梦工具介绍 Pixel Dream Workshop(像素幻梦创意工坊)是一款基于FLUX.1-dev扩散模型的下一代像素艺术生成工具。与传统的AI绘图工具不同,它采用了明亮的16-…...
LabVIEW标准表法开发气体流量标准装置
标准表法是气体流量计检定校准的主流方法,针对气体流量检测过程中自动化程度低、数据采集精度不足、设备控制协同性差的问题,依托 LabVIEW 图形化编程平台搭建气体流量标准装置应用系统,实现温度、压力、流量等参数的自动化采集、设备精准调控…...
BetterGI:基于计算机视觉的原神自动化辅助工具深度解析
BetterGI:基于计算机视觉的原神自动化辅助工具深度解析 【免费下载链接】better-genshin-impact 🍨BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testing Tools Fo…...
GPIO输入模式深度解析:STM32按键检测中IDR寄存器的使用技巧与常见问题
STM32 GPIO输入模式实战:从IDR寄存器到工业级按键检测方案 在嵌入式开发中,GPIO输入模式是实现人机交互的基础功能之一。对于STM32开发者而言,深入理解IDR寄存器的工作原理和按键检测的实现技巧,往往决定着产品交互的可靠性和响应…...
文本驱动图表工具:重新定义可视化创作的效率革命
文本驱动图表工具:重新定义可视化创作的效率革命 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器,支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图的…...
CLIP Prompt Tuning实战指南:如何用少量样本优化多模态模型性能
最近在做一个多模态内容理解的项目,用到了CLIP模型。大家都知道CLIP很强大,但真到了要让它适应我们自己的业务数据时,传统全量微调(Full Fine-tuning)那套方法就有点让人头疼了——动辄几十GB的显存需求,还…...
【笔试真题】- 小红书-2026.03.25-第二套
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 小红书-2026.03.25-第二套 题目一:A先生的用户数据整理 把每条记录的三个字段按类型识别出来即可:带小数点的是经验值,全小写字符串是用户名,剩下的整数就…...
索尼Bravia家庭影院新品登场,能否重塑市场格局?
索尼Bravia新品:模块化家庭影院新选择索尼宣布推出七款新的Bravia家庭影院产品,涵盖一台电视、两款条形音箱、三款低音炮和后置音箱。除Theater Bar 5外,产品可自由搭配组合。其中,Bravia Theater Bar 7作为中高端条形音箱&#x…...
一体机-显控终端 国产化嵌入式处理板卡 产品规格说明书
一、产品概述MB-FT24A02是一款专为工业嵌入式、车载人机交互、国产化终端替代等场景设计的全国产化高性能处理板卡,采用紧凑型PCB设计,核心搭载飞腾FT-2000/4国产处理器,搭配飞腾X100专用国产桥片,构建全链路自主可控硬件平台&…...


