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

青蛙跳台阶问题

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


文章目录

  • 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.lryc.cn/news/354689.html

相关文章:

  • linux日常运维2
  • flink cdc mysql整理与总结
  • 【三维重建】ePnP
  • C++进阶之路:何为运算符重载、赋值运算符重载与前后置++重载(类与对象_中篇)
  • 8、python基础知识图谱
  • 智慧校园建设规划方案
  • 【深度学习实战—8】:基于MediaPipe的人脸检测
  • OSCP学习,布置你的Kali Linux
  • PWA离线优先策略:提升用户体验的关键步骤
  • 网页提示“非私密连接”是为什么?
  • [自动驾驶技术]-8 Tesla自动驾驶方案之硬件(AI Day 2022)
  • 人力资源管理信息化系统如何支持企业开展管理诊断?
  • Cohere继Command-R+之后发布大模型Aya-23,性能超越 Gemma、Mistral 等,支持中文
  • 身为UI设计老鸟,不学点3D,好像要被潮流抛弃啦,卷起来吧。
  • 线代-向量eg3.1 3.2 3.4
  • 【C语言】实现贪吃蛇--项目实践(超详细)
  • Elasticsearch 分析器的高级用法一(同义词,高亮搜索)
  • Python 开心消消乐
  • mysql - 索引基本知识梳理
  • Nginx SSL/TLS配置:搭建安全的HTTPS网站
  • echarts 折线图流光效果偏移或不显示
  • Redis数据类型(上篇)
  • VMware虚拟机安装Linux
  • slurm是什么,怎么用? For slurm和For Pytorch有什么区别和联系?
  • 类和对象【六】友元和内部类
  • 一点点 cv 经验 1:cv方向、模型评估、输入尺寸、目标检测器设计
  • Java-SpringBoot集成Langchain4j文本嵌入模型实现向量相似度查询
  • 正宇软件:引领数字人大新纪元,开启甘肃人大代表履职新篇章
  • UniApp中,在页面显示时触发子组件的重新渲染
  • Linux(三)