当前位置: 首页 > news >正文

C语言青蛙跳台阶【图文详解】

青蛙跳台阶

青蛙跳台阶

  • 前言
    • 1. 题目介绍
    • 2. 解题思路
    • 3. 利用图片来演示青蛙跳台阶的原理
    • 4. 如何用C语言实现青蛙跳台阶

前言

在本文,我们要与一只活泼可爱的小青蛙合作,带领着它跳上台阶,这个小家伙精力充沛,特别擅长于跳跃。我们要让它做我们的思维助手,看看有多少种方法让它跳到指定的台阶上。

本文比较生动有趣,没有太多的理论,小青蛙也非常敬业,相信对你来说,阅读本文将是一个愉快的经历,如果有什么建议,可以评论留言我,恒川都会认真看的哦。

我还得温馨地提醒一下你:

本文易懂(不难),但还是值得琢磨的。有些思维方法乍一眼看起来很像,代码写出来似乎也差不多,但是它们之间的解题方法,确实有差别的,你可能需要仔细体会,才能领悟。
如果想看汉诺塔的讲解,请点击该链接汉诺塔详细图解。

1. 题目介绍

一只青蛙可以一次跳 1 级台阶或一次跳 2 级台阶,例如:跳上第一级台阶只有一种跳法:直接跳 1 级即可。跳上两级台阶,有两种跳法: 每次跳 1 级,跳两次; 或者一次跳 2 级.
问要跳上第 n 级台阶有多少种跳法?

2. 解题思路

此类求多少种可能性 的题目一般都有递推性质 ,跟斐波那契,汉诺塔的题型相似,即 f(n)和 f(n-1)…f(1)之间是有联系的。
如果想看汉诺塔的讲解,请点击该链接汉诺塔详细图解

设跳上 n级台阶有 f(n)种跳法。在所有跳法中,青蛙的最后一步只有两种情况: 跳上1级或 2级台阶。
当为 1级台阶: 剩 n-1个台阶,此情况共有 f(n-1)种跳法;
当为 2级台阶: 剩 n-2个台阶,此情况共有 f(n-2)种跳法。
f(n)为以上两种情况之和,即 f(n)=f(n-1)+f(n-2),以上递推性质为斐波那契数列。本题可转化为求斐波那契数列第 n项的值 ,与斐波那契数列等价,唯一的不同在于起始数字不同。
青蛙跳台阶问题: f(0)=1 , f(1)=1, f(2)=2;
斐波那契数列问题: f(0)=0 , f(1)=1, f(2)=1。
跳台阶演示过程
斐波那契数列的定义是 f(n + 1) = f(n) + f(n - 1),生成第n项的做法有以下几种:

递归法:
原理: 把 f(n)问题的计算拆分成 f(n-1)和 f(n-2)两个子问题的计算,并递归,以 f(0)和 f(1)为终止条件。
缺点: 大量重复的递归计算,例如 f(n)和 f(n - 1)两者向下递归都需要计算 f(n - 2)的值。

记忆化递归法:
原理: 在递归法的基础上,新建一个长度为 n的数组,用于在递归时存储 f(0)至 f(n)的数字值,重复遇到某数字时则直接从数组取用,避免了重复的递归计算。
缺点: 记忆化存储的数组需要使用 O(N)的额外空间。

动态规划:
原理: 以斐波那契数列性质 f(n + 1) = f(n) + f(n - 1)为转移方程。
从计算效率、空间复杂度上看,动态规划是本题的最佳解法。

链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/solution/mian-shi-ti-10-ii-qing-wa-tiao-tai-jie-wen-ti-dong/
来源:力扣(LeetCode)

3. 利用图片来演示青蛙跳台阶的原理

青蛙跳台阶的两种情况
在这里插入图片描述
在这里插入图片描述

4. 如何用C语言实现青蛙跳台阶

#include<stdio.h>
int dance_s(int n)
{if (n == 1){return 1;//当只有一层台阶时直接返回1}if (n == 2){return 2;//当只有2层台阶时直接返回2}if (n > 2){return dance_s(n - 1) + dance_s(n - 2);}//当n>2时,利用递归,直到结束停止
}
int main()
{int n = 0;scanf("%d", &n);//输入台阶的个数int num = dance_s(n);printf("%d\n", num);//打印共有多少种跳台阶的方案return 0;
}

如果这份博客对大家有帮助,希望各位给恒川一个免费的点赞作为鼓励,并评论收藏一下,谢谢大家!!!
制作不易,如果大家有什么疑问或给恒川的意见,欢迎评论区留言。

相关文章:

C语言青蛙跳台阶【图文详解】

青蛙跳台阶前言1. 题目介绍2. 解题思路3. 利用图片来演示青蛙跳台阶的原理4. 如何用C语言实现青蛙跳台阶前言 在本文&#xff0c;我们要与一只活泼可爱的小青蛙合作&#xff0c;带领着它跳上台阶&#xff0c;这个小家伙精力充沛&#xff0c;特别擅长于跳跃。我们要让它做我们的…...

笔记(五)——list容器的基础理论知识

list容器是一个双向链表容器&#xff0c;可以高效地进行插入删除元素&#xff0c;但是不能随机存取元素&#xff08;不支持at()和[]操作符&#xff09;。一、list容器的对象构造方法list对象采用模板类的默认构造形式例如list<T> lst&#xff1b;#include<iostream>…...

浅谈网络中接口幂等性设计问题

所谓幂等性设计&#xff0c;就是说&#xff0c;一次和多次请求某一个资源应该具有同样的副作用。用数学的语言来表达就是&#xff1a;f(x) f(f(x))。 在数学里&#xff0c;幂等有两种主要的定义。 在某二元运算下&#xff0c;幂等元素是指被自己重复运算&#xff08;或对于函数…...

《C Primer Plus》第13章复习题与编程练习

《C Primer Plus》第13章复习题与编程练习复习题1. 下面的程序有什么问题&#xff1f;2. 下面的程序完成什么任务&#xff1f;&#xff08;假设在命令行环境中运行&#xff09;3. 假设程序中有下列语句&#xff1a;4. 编写一个程序&#xff0c;不接受任何命令行参数或接受一个命…...

计算机SCI论文应该怎么作图? - 易智编译EaseEditing

计算机SCI论文&#xff0c;作图时要注意以下几个方面的问题&#xff1a; 1.图片的格式要tiff或者eps&#xff1b; 2.文件大小不能超过10M&#xff1b; 3.长和宽也给出了具体要求&#xff1b; 4.色彩模式要RGB或者灰度图&#xff1b; 5.文中的文字字体和大小&#xff1b; …...

【一】kubernetes集群部署

一、docker环境搭建 1、移除以前docker相关包 sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine2、配置yam源 sudo yum install -y yum-utilssudo yum-config-manager --ad…...

Docker安装Redis

一、拉取镜像 命令&#xff1a;&#xff1a;docker pull <镜像名称>:<版本号> docker pull redis 二&#xff1a;Docker挂载配置文件 挂载&#xff1a;即将宿主的文件和容器内部目录相关联&#xff0c;相互绑定&#xff0c;在宿主机内修改文件的话也随之修改容…...

在shell中执行一条可执行程序(./a.out) 系统执行的过程

目录 系统调度过程 用户空间角度&#xff1a; 内核角度 1、调用fork创建一个新进程 2、使用_fo_fork创建新进程 3、父进程调用wake_up_new_task尝试唤醒新进程 4、CPU选择一个合适的进程来运行&#xff1b; 5、运行新进程 6、实现负载均衡 系统调度过程 分析在命令行…...

【ArcGIS Pro二次开发】(10):属性表字段(field)的修改

在ArcGIS Pro中&#xff0c;经常会遇到用字段计算器对要素的属性表进行计算。下面以一个例子演示如何在ArcGIS Pro SDK二次开发中实现。 一、要实现的功能 如上图所示的要素图层&#xff0c;要实现如下功能&#xff1a; 当字段【市级行政区】的值为【泉州市】时&#xff0c;将…...

数据结构与算法—散列表

目录 散列表 散列函数 散列冲突解决 1、开放寻址法 1.1 线性探测 1.2 二次探测 1.3 双重散列 2、链表法 使用场景 单词查找 散列表与链表的结合使用LRU 散列表总结 散列表实例 散列表 Word 单词拼写功能&#xff0c;如何实现的&#xff1f;散列表&#xff08;Has…...

计算机网络笔记、面试八股(一)—— TCP/IP网络模型

本章目录1. TCP/IP网络模型1.1 应用层1.1.1 应用层作用1.1.2 应用层有哪些常用协议1.2 运输层1.2.1 TCP与UDP的区别1.2.2 分块传输1.2.3 端口1.3 网络层1.3.1 IP报文1.3.2 IP地址1.3.3 网络号和主机号的获得1.3.4 子网掩码的获得1.3.5 路由1.3.6 IP地址与MAC地址的区别1.3.7 AR…...

Servlet笔记(18):国际化

三个概念 国际化&#xff1a; 意义着一个网站提供不同版本的翻译成访问者的语言或国籍的内容。本地化&#xff1a; 意味着向网站添加资源&#xff0c;以使其适应特定的地理或文化区域。区域设置&#xff1a; 针对某个国家的某个地区的设置。 Servlet可以根据请求者的区域设置…...

kibana搭建(windowslinux)

1.说明 搭建kibana方便查询es库&#xff0c;本文分别对windows和linux版本进行安装&#xff0c;因为es集群版本是7.4.1&#xff0c;所以配套的kibana也是选择相同版本 2.下载 https://artifacts.elastic.co/downloads/kibana/kibana-7.4.1-windows-x86_64.zip https://artifact…...

(pytorch进阶之路)Informer

论文&#xff1a;Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting (AAAI’21 Best Paper) 看了一下以前的论文学习学习&#xff0c;我也是重应用吧&#xff0c;所以代码部分会比较多&#xff0c;理论部分就一笔带过吧 论文作者也很良心的…...

关键词聚类和凸现分析-实战1——亚急性甲状腺炎的

审稿人问题第8页第26行-请指出#是什么意思&#xff0c;并解释为什么亚急性甲状腺炎在这里被列为#8。我认为在搜索亚急性甲状腺炎相关文章时&#xff0c;关键词共现分析应该提供关键词共现的数据。这些结果的实际用途是什么?亚急性甲状腺炎是一种较为罕见但重要的甲状腺疾病&am…...

二叉树——二叉搜索树中的众数

二叉搜索树中的众数 链接 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。 如果树中有不止一个众数&#xff0c;可以按 任意顺序 返回。 假定…...

安装_配置参数解读_集群安装配置_启动选举_搭建启停脚本---大数据之ZooKeeper工作笔记004

这里首先下载zookeeper安装包,可以看到官网地址 找到download 点击下载 找到老一点的,我们找3.5.7 in the archive 点击 然后这里找到3.5.7这一个 然后下载这个-bin.tar.gz这个...

RTMP的工作原理及优缺点

一.什么是RTMP&#xff1f;RTMP&#xff08;Real-Time Messaging Protocol&#xff0c;实时消息传输协议&#xff09;是一种用于低延迟、实时音视频和数据传输的双向互联网通信协议&#xff0c;由Macromedia&#xff08;后被Adobe收购&#xff09;开发。RTMP的工作原理是&#…...

【数据结构与算法】——第八章:排序

文章目录1、基本概念1.1 什么是排序1.2 排序算法的稳定性1.3 排序算法的分类1.4 内排序的方法2、插入排序2.1 直接插入排序2.2 直接插入排序2.3 希尔排序3、交换排序3.1 冒泡排序3.2 快速排序4、选择排序4.1 简单选择排序4.2 树形选择排序4.3 堆排序4.4 二路归并排序5、基数排序…...

在linux中web服务器的搭建与配置

以下涉及到的linux命令大全查阅 https://www.runoob.com/linux/linux-command-manual.htmlvim命令查阅 https://www.runoob.com/linux/linux-vim.htmlscp命令https://www.runoob.com/linux/linux-comm-scp.html首先要有一个请求的服务地址用ssh 进入到linux系统中ssh 请求的服务…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...

使用VMware克隆功能快速搭建集群

自己搭建的虚拟机&#xff0c;后续不管是学习java还是大数据&#xff0c;都需要集群&#xff0c;java需要分布式的微服务&#xff0c;大数据Hadoop的计算集群&#xff0c;如果从头开始搭建虚拟机会比较费时费力&#xff0c;这里分享一下如何使用克隆功能快速搭建一个集群 先把…...

Linux【5】-----编译和烧写Linux系统镜像(RK3568)

参考&#xff1a;讯为 1、文件系统 不同的文件系统组成了&#xff1a;debian、ubuntu、buildroot、qt等系统 每个文件系统的uboot和kernel是一样的 2、源码目录介绍 目录 3、正式编译 编译脚本build.sh 帮助内容如下&#xff1a; Available options: uboot …...

AI书签管理工具开发全记录(十八):书签导入导出

文章目录 AI书签管理工具开发全记录&#xff08;十八&#xff09;&#xff1a;书签导入导出1.前言 &#x1f4dd;2.书签结构分析 &#x1f4d6;3.书签示例 &#x1f4d1;4.书签文件结构定义描述 &#x1f523;4.1. ​整体文档结构​​4.2. ​核心元素类型​​4.3. ​层级关系4.…...

简约商务年终工作总结报告PPT模版分享

简约精致扁平化商务通用动画PPT模版&#xff0c;简约大气素雅商务PPT模版&#xff0c;商务PPT模版&#xff0c;商业计划书PPT模版&#xff0c;IOS风商务通用PPT模版&#xff0c;公司介绍企业宣传PPT模版&#xff0c;创业融资PPT模版&#xff0c;创意低多边形PPT模版&#xff0c…...

ADB识别手机系统弹授权框-如何处理多重弹框叠加和重叠问题

ADB识别手机系统弹授权框-如何处理多重弹框叠加和重叠问题 --蓝牙电话SDK自动部署 上一篇&#xff1a;手机App-插入USB时自动授权点击确定按钮-使系统弹出框自动消失 下一篇&#xff1a;编写中。 一、前言 我们在上一篇《手机App-插入USB时自动授权点击确定按钮-使系统弹出框…...