【C语言】手把手带你解决青蛙跳台阶问题

news2024/11/16 1:17:50

在这里插入图片描述

君兮_的个人主页

勤时当勉励 岁月不待人

C/C++ 游戏开发


Hello,这里是君兮_,今天更新的是经典递归问题——青蛙跳台阶,在所有有关递归的问题中,青蛙跳台阶是最广为人知的问题之一,可以说,如果你能真正弄懂青蛙跳台阶问题,你的递归也一定不会太差,今天就来带大家深度解析一下青蛙跳台阶问题。

青蛙跳台阶

  • 青蛙跳台阶问题的详细描述
  • 具体解决青蛙跳台阶问题
    • 青蛙跳台阶问题解题思路分析
      • 思路总结
    • 在C语言中实现青蛙跳台阶
      • 问题进阶:
      • 思路分析
  • 总结

青蛙跳台阶问题的详细描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多上种跳法。


具体解决青蛙跳台阶问题

青蛙跳台阶问题解题思路分析

  • 当N=1时,那么青蛙就只有一种跳法。
    在这里插入图片描述

  • 当N=2时,青蛙可以跳两次一层台阶也可以跳一次二层台阶,有两种跳法。
    在这里插入图片描述

  • 当N=3时,青蛙可以先跳一次一层台阶,那么还需要跳两层台阶,那它此时就是N=2时的跳法,有两种跳法。

  • 当青蛙跳一次二层台阶时,此时只需要跳一层台阶,那么它就是N=1时的跳法。

  • 此时它的跳法就等于(N=1)+(N=2)种跳法。
    在这里插入图片描述

  • 当N=4时,青蛙跳一次一层台阶时,还需要跳三层台阶,那它此时剩下的跳法就等于N=3时的跳法,即有三种跳法

  • 青蛙跳一次二层台阶时,还剩二层台阶需要跳,那它此时剩下的跳法就是N=2时的跳法,则有两种跳法。

  • 那么此时它的跳法就等于(N=2)+(N=3)种跳法。
    在这里插入图片描述

思路总结

  • 那么,不难看出青蛙跳台阶的规律,当N>2时,此时的跳法数就等于前面两个青蛙跳台阶跳法数之和

在C语言中实现青蛙跳台阶

  • 代码实现
#include<stdio.h>
int Jump(int n)
{
	if (n == 1)
	{
		return 1;//当只有一层台阶时直接返回1
	}
	 if (n == 2)
	{
		return 2;//当只有2层台阶时就返回2
	}
	 if (n > 2)
	 {
		 return Jump(n - 1) + Jump(n - 2);
	 }//当n>2时,利用递归进行返回
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int num = Jump(n);
	printf("%d\n", num);
	return 0;
}
 

问题进阶:

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶,也可以跳上3级台阶。求该青蛙跳上一个n级的台阶总共有多上种跳法。

思路分析

  • 首先,当N=1时,那么青蛙就有一种跳法。

  • 当N=2时,青蛙可以跳两次一层台阶也可以跳一次二层台阶,有两种跳法

  • 当N=3时,当青蛙首先跳一次一层台阶时,那么还需要跳两层台阶,那它此时就是N=2时的跳法,即有两种跳法。
    当青蛙跳一次二层台阶时,此时只需要再跳一层台阶,那么它此时就是N=1时的跳法,即有一种跳法。

    最后就是青蛙直接跳三层台阶,只有一种跳法。那么它的跳法总数就是(N=1)+(N=2)+1=4种跳法。

  • 当N=4时,青蛙跳一次一层台阶时,还剩三层台阶需要跳,那它此时就是N=3时的跳法,即有四种跳法。
    青蛙跳一次二层台阶时,还剩二层台阶需要跳,那它此时就是N=2时的跳法,则有两种跳法。那么它的跳法总数即为(N=2)+(N=3)=6种跳法。

  • 规律总结

  • 当N>3时,本质上就是前面两个跳法相加就得到此时青蛙跳台阶方法的总数。

  • 代码演示如下:

#include<stdio.h>
int Jump(int n)
{
	if (n == 1)
	{
		return 1;
	}
	if (n == 2)
	{
		return 2;
	}
	if (n == 3)
	{
		return 3;
	}
	if (n > 3)
	{
		return Jump(n - 1) + Jump(n - 2)+Jump(n-3);
	}
}
 
int main()
{
	int n = 0;
	scanf("%d", &n);
	int num = Jump(n);
	printf("%d\n", num);
	return 0;
}
  • 注:
  • 当青蛙每次可以跳k级台阶时咱们也可以像上面这样找到相应的规律求解

总结

  • 今天的内容到这里就结束了,我们今天通过递归的方式具体解决了青蛙跳台阶。如果你还对步骤还有迷惑的话一定要自己试一下,不然光看是非常容易遗忘并且非常不容易理解的,咱们必须反复的练习才能熟悉起来!

  • 好了,如果你有任何疑问欢迎在评论区或者私信我提出,大家下次再见啦!

新人博主创作不易,如果感觉文章内容对你有所帮助的话不妨三连一下这个新人博主再走呗。你们的支持就是我更新的动力!!!

**(可莉请求你们三连支持一下博主!!!点击下方评论点赞收藏帮帮可莉吧)**

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700960.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javaweb学习2

p标签使用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <!--p标签定义段落 p元素自动在其前后创建一段空白--> hello&#xff0c;world &l…

电脑鼠标怎么改变形状

电脑鼠标怎么改变形状? 首先你要下载一个鼠标指针包&#xff0c;网上有很多这样的资源&#xff0c;选择你喜欢的那一个指针包。 点击开始菜单&#xff0c;找到控制面板&#xff0c;打开控制面板。 从控制面板里点击“硬件和声音”&#xff0c;在设备和打印机里面点击“鼠标”。…

1-Eureka服务注册与发现以及Eureka集群搭建(实操型)

1-Eureka服务注册与发现以及Eureka集群搭建&#xff08;实操型&#xff09; 1. 简单搭建微服务框架1.1 idea创建maven多模块项目1.2 项目结构1.3 项目依赖与配置1.3.1 父工程&#xff1a;dog-cloud-parent1.3.2 管理实体项目&#xff1a;dog-po1.3.3 服务提供者&#xff1a;dog…

HBase(9):过滤器

1 简介 在HBase中,如果要对海量的数据来进行查询,此时基本的操作是比较无力的。此时,需要借助HBase中的高级语法——Filter来进行查询。Filter可以根据列簇、列、版本等条件来对数据进行过滤查询。因为在HBase中,主键、列、版本都是有序存储的,所以借助Filter,可以高效地…

主流开源深度学习框架简介

主流开源深度学习框架简介 本文目录&#xff1a; 一、TensorFlow深度学习框架 二、PyTorch深度学习框架 三、Keras深度学习框架 四、Caffe深度学习框架 五、中国深度学习开源框架状况 六、几种框架的对比 七、其他统计数据 当下&#xff0c;有许多主流的开源深度学习框架…

mysql 模糊查询的字段 支持不区分大小写功能

1. 直接修改字段对应的校对规则即可 ​​​​​​ 2. 校对规则说明 ​ utf8_bin 将字符串中的每一个字符用二进制数据存储&#xff0c;区分大小写。 utf8_genera_ci 不区分大小写&#xff0c;ci为case insensitive的缩写&#xff0c;即大小写不敏感。utf8_general_cs 区分…

香蕉派BPI-R4 Wifi7路由器采用联发科MT7988A (Filogic 880)设计

香蕉派BPI-R4路由器板采用联发科MT7988A (Filogic 880)四核ARM Corex-A73方案设计&#xff0c;板载4GB DDR4内存,8GB eMMC存储,128MB SPI-NAND闪存&#xff0c;还具有2个10Gbe SFP光电口, 4x Gbe千兆网口&#xff0c;带USB3.2端口&#xff0c;M.2接口支持4G/5G/NVME SSD.2x min…

海外版“咸鱼”Carousell是什么?

做跨境的都知道&#xff0c;一定不能只在一颗树上吊死&#xff0c;潮流总是把你推着向前的&#xff0c;现在跨境电商平台一样层出不穷。今天就来跟大家分享最近发现比价好做的外贸电商平台APP——Carousell。号称海外版“咸鱼”&#xff0c;它的功能也与咸鱼是差不多的&#xf…

群晖ssh登录并开启root用户登录功能

说明 群辉默认不允许SSH使用ROOT远程登陆&#xff0c;只能用手动创建的账户登陆&#xff0c;需要拷贝破解文件的时候会提示权限不足&#xff0c;这个时候肯定需要通过root用户去登录靠北 启动ssh登录功能 双击控制面板 点击终端和SNMP 启用ssh和telnet 点击应用 finalshel…

SpringBoot入门:使用IDEA构建第一个SpringBoot项目

SpringBoot框架介绍 Spring Boot是一个简化Spring开发的框架&#xff0c;用来监护spring应用开发&#xff0c;约定大于配置&#xff0c;去繁就简&#xff0c;just run 就能创建一个独立的&#xff0c;产品级的应用。我们在使用Spring Boot时只需要配置相应的Spring Boot就可以…

编译原理三:词法分析

概念 在编译器工作流程中&#xff0c;词法分析是将源代码分解为一系列词法单元的过程。 词法单元包括标识符、关键字、运算符等。词法分析器会读取源代码的每一个字符&#xff0c;根据预定义的规则将它们组成一系列词法单元。 词法分析器通常使用有限状态机来实现。有限状态机…

如何解决在vue3+vite项目中加载不了.tga文件的问题

因项目需求所以需要加载 .tga 类型的文件 import backgroundImage from "/assets/combined_image.tga" import { TGALoader } from "three/addons/loaders/TGALoader.js";const loader new TGALoader(); const texture1 loader.load(backgroundImage);但…

操作系统5:线程的概念和线程实现

目录 1、线程的概念 &#xff08;1&#xff09;进程和进程并发是所需要付出的时空开销 &#xff08;2&#xff09;线程和进程的比较 &#xff08;3&#xff09;线程的状态和线程的控制块 2、线程的实现 &#xff08;1&#xff09;线程的实现方式 &#xff08;2&#xff…

2.编程语言的代码规则和规范

**格式和规范**只需要记住最原始的c和c的语言规则就可以了不要把所有的方法都掌握了 比如孔乙己 每个语法之间要有空格或分隔符 2。“”英文双引号里面是不需要的&#xff0c;这个双引号里面输入什么都可以 3.预处理的命令 必须一条占一行

传统美业如何拓客引流?如何借力小程序实现低成本引流与锁客

​传统门店的经营方式主要靠广告投入和口碑传播&#xff0c;然而&#xff0c;门店客流寥寥无几&#xff0c;如今&#xff0c;移动互联网时代&#xff0c;新零售的盛行&#xff0c;传统实体门店急需转型&#xff0c;接轨新的商业营销模式来为门店引流。 处在小程序爆发的风口&a…

《PyTorch深度学习实践》第四讲 反向传播

b站刘二大人《PyTorch深度学习实践》课程第四讲反向传播笔记与代码&#xff1a;https://www.bilibili.com/video/BV1Y7411d7Ys?p4&vd_sourceb17f113d28933824d753a0915d5e3a90 对于上述简单的模型可以用解析式来做&#xff0c;但是对于复杂模型而言&#xff0c;如下图每个…

详解线程池的作用和实际应用以及拒绝策略

目录 线程池的作用&#xff1f; 线程池的意义&#xff1a; 线程池的参数 ​编辑 线程池任务执行的顺序 线程池拒绝策略 四种策略 应用场景分析 AbortPolicy DiscardPolicy DiscardOldestPolicy CallerRunsPolicy 线程池的作用&#xff1f; 优化系统架构通常包括在时间…

亚马逊平台买家注册流程

在亚马逊平台注册买家号是比较简单的。以下是亚马逊买家注册流程&#xff1a; 1、打开亚马逊网站&#xff1a;访问亚马逊的官方网站&#xff0c;如果要注册美国买家号&#xff0c;那么网址就是www.amazon.com。 2、点击"注册"&#xff1a;在亚马逊首页的右上角&…

LLM - 搭建 ProteinGPT 结合蛋白质结构 PDB 知识的行业 ChatGPT 系统

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131403263 论文&#xff1a;ProteinChat: Towards Enabling ChatGPT-Like Capabilities on Protein 3D Structures 工程&#xff1a;ht…

C语言学习(二十九)---内存操作函数

在上一节内容中&#xff0c;我们学习了有关字符串操作的函数&#xff0c;其中分为了限制长度和不限制长度两种方式&#xff0c;虽然上节内容已经在很大程度上有助于程序的实现&#xff0c;但是其有一个致命的缺陷&#xff0c;聪明的你一定已经猜到了吧&#xff0c;对的&#xf…