青蛙跳台阶问题

news2024/11/15 15:43:03

请添加图片描述
本期介绍🍖
主要介绍:青蛙跳台阶问题,青蛙跳台阶与斐波那契数列的关系👀。


文章目录

  • 1. 题目
  • 2. 递归解题思路
  • 3. 迭代解题思路


1. 题目

  从前有一只青蛙他想跳台阶,有n级台阶,青蛙一次可以跳1级台阶,也可以跳2级台阶;问:该青蛙跳到第n级台阶一共有多少种跳法。


2. 递归解题思路

  当这只青蛙跳上了第n级台阶,它只可能是从(n-2)级或(n-1)级台阶跳上第n级台阶的,因为这只青蛙每次要么跳1级台阶,要么2级台阶。假设通过跳上第(n-2)级台阶有StepJump(n-2)种跳法,第(n-1)级台阶有StepJump(n-1)种跳法。那么青蛙从第(n-2)级台阶跳上第n级台阶就有StepJump(n-2)种跳法,同理青蛙从第(n-1)级台阶跳上第n级台阶就有StepJump(n-1)种跳法,那么必然可以得到:StepJump(n) = StepJump(n-1) + StepJump(n-2),如下图所示:

在这里插入图片描述

  照这样演化下去,跳上某级台阶的跳法等于前两级台阶跳法的和。如此往下递推,直到计算跳上第1级台阶和第2级台阶的跳法,如下图所示。青蛙跳上1级台阶只有一种跳法,跳上2级台阶有2种跳法,以此作为递归函数的限制条件。

在这里插入图片描述
  代码如下:

#include<stdio.h>

int StepJump(int n)
{
	if (n == 1)
	{
		return 1;
	}
	else if (n == 2)
	{
		return 2;
	}
	else
	{
		return StepJump(n - 1) + StepJump(n - 2);
	}
}

int main()
{
	int n = 0;//需要跳的台阶数
	while (scanf("%d", &n) == 1)
	{
		int back = StepJump(n);
		printf("跳上第%d级台阶有>:%d种跳法\n", n, back);
	}
	return 0;
}

在这里插入图片描述


3. 迭代解题思路

  青蛙跳台阶特点:跳上某级台阶的跳法等于前两级台阶跳法的和,斐波那契数列的特点:每一项等于前两项之和。大家会惊讶的发现,青蛙跳平台问题的本质就是斐波那契额数列的运算。
  通过求斐波那契数那一章学习,会得知使用递归实现求斐波那契数,会导致过多的冗余计算,效率过于低下。所以不妨使用迭代的思路来解决青蛙跳台阶问题,跳上1级台阶有1种跳法,跳上两级台阶有3种跳法。从第3级台阶开始往后,每级台阶都是前两级台阶跳法的和。实现代码如下:

#include<stdio.h>

int StepJump(int n)
{
	int first = 1;
	int second = 1;
	int sum = 1;
	while (n >= 2)
	{
		sum = first + second;
		first = second;
		second = sum;
		n--;
	}
	return sum;
}

int main()
{
	int n = 0;
	while (scanf("%d", &n) == 1)
	{
		int back = StepJump(n);
		printf("跳上第%d级台阶有>:%d种跳法\n", n, back);
	}
	return 0;
}

在这里插入图片描述


在这里插入图片描述

这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀。

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

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

相关文章

MYSQL之安装

一&#xff0c;下载仓库包 wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm二&#xff0c;安装仓库 yum -y install mysql80-community-release-el7-3.noarch.rpmsed -i s/gpgcheck1/gpgcheck0/g mysql-community.repo三&#xff0c;安装MY…

Python代码:十七、生成列表

1、题目 描述&#xff1a; 一串连续的数据用什么记录最合适&#xff0c;牛牛认为在Python中非列表&#xff08;list&#xff09;莫属了。现输入牛牛朋友们的名字&#xff0c;请使用list函数与split函数将它们封装成列表&#xff0c;再整个输出列表。 输入描述&#xff1a; …

lua 计算第几周

需求 计算当前赛季的开始和结束日期&#xff0c;2024年1月1日周一是第1周的开始&#xff0c;每两周是一个赛季。 lua代码 没有处理时区问题 local const 24 * 60 * 60 --一整天的时间戳 local server_time 1716595200--todo:修改服务器时间 local date os.date("*t…

Redis 事件机制 - AE 抽象层

Redis 服务器是一个事件驱动程序&#xff0c;它主要处理如下两种事件&#xff1a; 文件事件&#xff1a;利用 I/O 复用机制&#xff0c;监听 Socket 等文件描述符上发生的事件。这类事件主要由客户端&#xff08;或其他Redis 服务器&#xff09;发送网络请求触发。时间事件&am…

苗情灾情监控系统—提高农业生产效率

TH-MQ2苗情灾情监控系统是一种用于监测农作物生长状况和灾情的设备&#xff0c;通过实时监测和数据分析&#xff0c;帮助农民及时了解作物生长情况&#xff0c;采取相应的管理措施&#xff0c;提高农业生产效率和降低生产成本。 该系统通常由多种传感器、摄像头、数据传输模块等…

前端命令行部署

最近接了一个项目&#xff0c;发版本需要把dist包给后端部署服务&#xff0c;再加上产品那边需求不稳定&#xff0c;改了又改&#xff0c;一天要发好几个&#xff0c;不仅跟我配合的后端不胜其烦&#xff0c;本人也是很烦。最近在网上看到一个npm自主部署的包–deploy cli工具&…

QT C++ 模型视图结构 QTableView 简单例子

在Qt中&#xff0c;MVC模式被广泛使用于各种用户界面框架中&#xff0c;包括Qt的模型视图结构。Qt的模型视图结构是基于MVC模式设计的&#xff0c;其中包括了Model、View和Delegate三个部分。 QTableView是Qt模型视图结构中的一种视图&#xff0c;它用于以表格形式显示数据。 …

红队项目PinkysPalace格式字符串缓冲区溢出详解

简介 渗透测试-地基篇 该篇章目的是重新牢固地基&#xff0c;加强每日训练操作的笔记&#xff0c;在记录地基笔记中会有很多跳跃性思维的操作和方式方法&#xff0c;望大家能共同加油学到东西。 请注意&#xff1a; 本文仅用于技术讨论与研究&#xff0c;对于所有笔记中复现的…

如何使用OutputStream类实现文件的读写操作?

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

Tensors张量操作

定义Tensor 下面是一个常见的tensor&#xff0c;包含了里面的数值&#xff0c;属性&#xff0c;以及存储位置 tensor([[0.3565&#xff0c;0.1826&#xff0c;0.6719],[0.6695&#xff0c;0.5364&#xff0c;0.7057]]&#xff0c;dtypetorch.float32,devicecuda:0)Tensor的属…

Vue2 Element-UI 分页组件el-pagination 修改 自带的total、跳转等默认文字

场景需求&#xff1a; Vue2 Element-UI 分页组件el-pagination 修改 自带的total、跳转等默认文字。如下图&#xff1a;默认提示字变成了英文&#xff0c;如何将其 变成 汉字提示呢&#xff1f; 解决方案&#xff1a; 1.方案1&#xff1a;修改DOM内容 不提倡此方案&#xf…

这个springboot项目好用!毕设、学习提升

最近好多小伙伴过来问 V 哥关于毕业设计项目的事情&#xff0c;对于计算机类的同鞋们来说还是为难的&#xff0c;自己在学校掌握的技术栈比较少&#xff0c;要完成一个解决某领域业务的实用性项目&#xff0c;难度还是不小的&#xff0c;这得从需求分析&#xff0c;功能设计&am…

大语言模型训练部署流程及步骤

01.确定需求大小 在构建大语言模型的前期准备中&#xff0c;基础设施是最为重要的&#xff0c;GPU的型号以及数据直接关系到模型的训练质量和训练时间。例如&#xff1a;使用单个V100的GPU训练具有1750亿个参数的GPT-3将需要约288年&#xff0c;那就更不用提现在动辄万亿参数的…

react-d3-tree:React组件创建交互式D3树形图

在这里插入代码片import React from "react"; import ReactDOM from "react-dom"; import Tree from "react-d3-tree";import "./styles.css";const myTreeData [{name: "Gaurang Torvekar",attributes: {keyA: "val …

基础7 探索JAVA图形编程桌面:数据库操作组件详解

在当今这个全面以数字化占据主导地位的时代&#xff0c;图形化编程犹如一颗冉冉升起的新星&#xff0c;逐渐在编程领域中崭露头角&#xff0c;并且正逐步成为一种全新的趋势。其具备的直观性以及易上手的显著特性&#xff0c;使得数量愈发庞大的开发者以及业务人员能够以更为快…

ENVI6.0试用版(180天)详细安装教程,附安装包链接和一些常见问题

ENVI6.0试用版&#xff08;180天&#xff09;详细安装教程&#xff0c;附安装包链接和一些常见问题 文章目录 ENVI6.0试用版&#xff08;180天&#xff09;详细安装教程&#xff0c;附安装包链接和一些常见问题前言环境来源安装激活问题 前言 如标题所示&#xff0c;这个只是试…

文本三剑客之 sed 编辑器

一.sed 概述 1.sed 介绍 sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么从命令行中输入&#xff0c;要么存储在一个 命令文本文件中。 2.sed 的工…

基于51单片机的电压表设计—0~5V

基于51单片机的电压表设计 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.ADC0832模数转换芯片实现电压的测量&#xff1b; 2.测量电压精确到0.01V&#xff1b; 3.测量范围默认是0~5v&#xff1b;…

汽车合面合壳密封UV胶固化后能持续多久密封呢?汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

汽车合面合壳密封UV胶固化后能持续多久密封呢&#xff1f; UV胶在汽车合面合壳密封后的持久性取决于多种因素&#xff0c;包括UV胶的配方、环境条件、应力和使用情况等。一般而言&#xff0c;UV胶固化后的密封性能可以持续数年&#xff0c;我们可以从以下几个方面进行归纳&…

长难句打卡5.27

In fact, allowing non-lawyers to own shares in law firms would reduce costs and improve services to customers, by encouraging law firms to use technology and to employ professional managers to focus on improving firms’efficiency. 事实上&#xff0c;这通过…