青蛙跳阶问题

青蛙跳台阶问题的数学解法 题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)   个人思路:使用时间复杂度较大的算法,如斐波那契数列可以求解,将对n阶阶梯步数问题递归为n-1阶阶梯步数和n-2阶阶梯步数之和。但其实这个问题可以转化为一个数学问题,然后编程实现这个数学方法即可。   这里使用高中知识里的排列组合方法,当有n个台阶时,青蛙可以跳... 阅读详情

青蛙跳台阶

题目

青蛙一次只能跳 1级 或 2级,求跳到第 n 级台阶一共有多少种跳法。

核心逻辑(关键:逆向思考)

想站上第 n 级台阶,最后一步只存在两种可能性,没有别的情况:

  1. 最后一跳跳 1级:说明在这一跳之前,青蛙已经站在第 n-1 级。前面所有到达 n-1 的走法,接上这一下跳1级,就都是到n阶的合法方案。方案数量 = 到达 n-1 的方案数。
  2. 最后一跳跳 2级:说明在这一跳之前,青蛙已经站在第 n-2 级。前面所有到达 n-2 的走法,接上这一下跳2级,就都是到n阶的合法方案。方案数量 = 到达 n-2 的方案数。

所有方案不会重叠、不会漏掉。
所以递推式:
f(n)=f(n-1)+f(n-2)

边界条件(基础情况,不能靠递推算,直接定义)

  • f(1)=1:只有1级台阶,只能跳1次1级,1种方案
  • f(2)=2:两种:①1+1 ②直接跳2级,2种方案

重点:递推式子长得一样,但初始值不一样,所以数列本身和标准斐波那契不是一回事。
标准斐波那契:F(1)=1,F(2)=1;青蛙跳:f(1)=1,f(2)=2。

两种实现思路

  1. 递归

c

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

缺点:不断重复计算相同的f(k),n大之后效率极低。

  1. 迭代(循环,推荐)

从底层从小往大一步步算,只保存最近两个值,节省空间

c

int frog(int n)
{
if(n == 1) return 1;
if(n == 2) return 2;
int b = 1; // f(n-2)
int a = 2; // f(n-1)
int c;
for(int i = 3; i <= n; i++)
{
c= a + b;
b = a;
a = c;
}
return a;
}

扩展变种:青蛙可以跳1~n任意阶

逆向推导:到n阶,最后一步可以从 n-1 / n-2 / … /0 直接跳上来
f(n)=f(n-1)+f(n-2)+…+f(1)

到n阶的全部走法 = 到n-1阶所有走法 + 到n-2阶所有走法,边界单独定死,不要直接套用斐波那契的初始条件。

如果每次跳的是偶数格,则n为奇数是都为0。
但是每次跳奇数格,就没限制。
最重要就是看原理公式和找到特殊项

COMSOL电磁仿真案例——感应线圈 COMSOL电磁建模仿真案例——感应线圈 阅读详情

相关推荐

FPGA时序约束:从时钟树到数据路径的深度解析与优化策略

本文深入解析FPGA时序约束的核心技术与优化策略,涵盖时钟树结构分析、时序报告解读和数据路径优化。重点探讨Vivado工具中的时序约束方法,包括时钟定义、异常约束和物理优化,帮助工程师掌握寄存器级时序分析和系统级协同设计,实现高性能FPGA设计。

u5v6w7的博客 653

青蛙跳阶问题如何处理

//青蛙跳阶问题 //n个台阶 //1次可以跳一个台阶,也可以跳两个台阶 //这只青蛙要跳到第n个台阶,有多少种跳法 //因为每次只能跳一阶或两阶 //把第n阶的次数看成f(n)函数的话 //第一次跳1阶,则有f(n-1)种跳法 //第一次跳2阶,则有f(n-2)种跳法 //这里n>2 //这就形成了一个斐波那契数列 int Frog(int n) { if (n <= 2) return n; else return Frog(n - 1) + Frog(n - 2);//递归求斐波那契数 }

weixin_51858518的博客 213

STM32H7 FMC驱动TFT-LCD原理与实战

TFT-LCD并行接口驱动是嵌入式人机交互的基础技术,其核心在于将显示控制器抽象为存储器映射设备,依托硬件时序控制器实现低开销、高确定性刷新。FMC(Flexible Memory Controller)作为STM32H7系列的关键外设,通过地址/数据总线复用、可配置读写时序及Bank分区机制,支持将ILI9341、ST7789等主流LCD控制器挂载为‘慢速异步存储器’,从而替代GPIO模拟8080时序或LTDC+DMA2D方案。该技术显著降低CPU占用率,提升帧率稳定性,适用于工业HMI、实时仪表盘等对响

weixin_32306683的博客 548

剑指offer:青蛙跳阶问题

剑指offer:青蛙跳阶问题题目描述解题思路思路一思路二思路三代码实现 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路 设青蛙跳到第nnn级台阶,有f(n)f(n)f(n)种跳法。 思路一 逆向思考,跳到第nnn级台阶,有多少种跳法?由于青蛙可以一次跳跃多级台阶,所以跳到第nnn级台阶,可以从第n−1n-1n−1级台阶跳上来、第n−2n-2n−2级台阶…第1级台阶跳上来,也可以是一次跳跃nnn级台阶上来。所以跳法有: f(n

qq_33265796的博客 157

保研专业课复习别瞎卷!抓住408和数学重点,用真题反推高效复习路径

本文针对计算机专业保研学生,提出以真题为导向的408专业课和数学高效复习策略。通过构建真题知识图谱、分析题型与难度矩阵,帮助考生精准把握数据结构、操作系统等核心科目的高频考点,如树与图算法、TCP/IP协议栈等,并制定科学的时间分配方案,实现短期内的快速突破。

weixin_27966471的博客 402

09 SAP CPI 访问公共API接口

我在网上找了一个公共API,入参输入汉字返回拼音。至此,一个真正的访问API的接口就做好了。点击保存时可看到红叉报错。

SAP CPI 479

关于青蛙跳阶问题的算法分析

首先申明,一下是我个人分析得出,但是根据正确答案是2^n,所以以下个人分析过程仅供参考,并非正确.     2. 青蛙跳阶问题。 (1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。 (2)一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法?   对于这个问题进行解答:...

jiangguangxian的博客 456

Vue3 - Element Plus 下拉选择器 el-select 覆盖修改 placeholder样式,解决覆盖不生效问题(支持修改文字颜色、文字大小、选择器边框、hover效果、宽高等任意样式

vue3,element-plus,el-select,下拉选择器,下拉选择框,Select选择器,deep覆盖无效怎么办,怎么修改placeholder文字颜色,选择器select修改边框样式,修改文字大小,elementPlus选择器如何覆盖hover效果,使用deep改不了样式,修改边框颜色,select去掉边框,vue3+elementPlus中select选择器如何修改placeholder文字样式,修改el-select样式,select选择器样式覆盖不了咋办,el-select如何覆盖原样式,

🏆 前端领域优质创作者 1万+

【Offer】[10-2] 【青蛙跳阶问题】

题目描述 思路分析 Java代码 代码链接 题目描述   一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 思路分析 其实就是斐波那契数列, f(1)=1 f(2) =2 ,n= 3时,两种情况: 青蛙先跳一个台阶,后面还有两个台阶,所以跳法就为f(2), 青蛙先跳两个台阶,后面还有1...

diaolin2115的博客 130

phpMyAdmin | mysqli::real_connect(): (HY000/2002): No such file or directory

第一次安装宝塔mysql服务是默认关闭的,需要手动打开,打开服务再次进入phpMyAdmin发现可以进入了。

吻等离子的博客 2876

OSCP-1-3-natraj(本地文件包含、日志中毒、apache2配置漏洞、nmap提权)

像往常一样,我们将使用“Netdiscover”工具识别主机的 IP。所以,让我们首先用 nmap 列出所有 TCP 端口。我们从访问web服务(80端口)开始,在那里我们找到了几张关于Natraj的图片和信息,我们将查看源代码和robots.txt,似乎没有什么有用的。(或至少,目前)。因此,让我们继续进行。在 Dirb 及其默认字典的帮助下,我们找到了一个名为“”的目录。我们进入并列出一个名为“”的文件:如果我们执行它,我们会看到它什么也不做。我们可能需要添加其他内容。

墨痕诉清风的博客 532

青蛙跳台阶问题(变态跳台阶)

转自 斐波那契数列(意大利语: Successione di Fibonacci),又译费波拿契数、费波那西数列、费氏数列、黄金分割数列。 在数学上,费波那西数列是以递归的方法来定义: F_0=0 F_1=1 F_n = F_{n-1}+ F_{n-2} 用文字来说,就是费波那西数列由 0 和 1 开始,之后的费波那西系数就由之前的两数相加。首几个费波那西系数是(OEIS A00004

qq_28787211的博客 913

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

算法--Java青蛙跳台阶问题(一次可以跳n阶)

文章目录一、问题1、初级版2、升级版二、思路与代码1、第一种情况(初级版)2、所以初级版Java代码如下3、第二种情况(升级版)3、所以升级版Java代码如下三、总结 一、问题 1、初级版 一只青蛙跳台阶,一次可以跳1阶,可以2阶。那么,台阶为n时,有多少种跳法。 2、升级版 一只青蛙跳台阶,一次可以跳1阶,可以2阶,其能力足够强大以至于一次可以跳n阶。那么,台阶为n时,有多少种跳法。 二、思路与...

SongSir001的博客 5895

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

经典递归问题(汉诺塔、青蛙跳阶)

在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。(1) 每次只能移动一个盘子;汉诺塔是一个思维过程。

2202_75570363的博客 215

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

青蛙跳阶问题(思路和题解)

青蛙跳阶问题的题解和思路分析

weixin_73728113的博客 243

青蛙跳石头java_青蛙跳台阶(JAVA)与递归问题探究

青蛙跳台阶JAVA一只青蛙一次可以跳上一层台阶,也可以跳上两层,求该青蛙跳上n层的台阶总共有多少种跳法(先后次序不同算不同的结果)。思考:可以看出,每次青蛙出脚都会有两种可能,一步或者两步,再次出脚也是两种可能,一步或者两步,每次出脚就是一步或者两步,那么,何时青蛙不能出脚了,很显然,是台阶走完了,所以,青蛙跳台阶每种跳法都是1和2的各种组合;先来看看层数和方法数之间规律吧!(这里用到了类似信息论...

weixin_39891317的博客 196

青蛙跳台阶与汉诺塔问题

hello,各位小伙伴们上次我们复习了C语言小tip之函数递归,这次我们来使用函数递归来完成青蛙跳台阶和汉诺塔问题!

2301_80886847的博客 657

python青蛙跳台阶_Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法

前言跳台阶、变态跳台阶、矩形覆盖其实都和斐波那契数列是一类问题,文中通过示例代码介绍的非常详细,下面话不多说了,来一起看看详细的介绍吧。跳台阶问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。分析:初始值很容易得到,当n > 2时,跳上n级台阶最后一步无外乎两种情况,从第n-1级跳一级跳上来,或是从第n-2级跳2级跳上来,因此很容易得到如下递...

weixin_39582656的博客 178

剑指offer中的青蛙跳台阶问题

剑指offer ---#define _CRT_SECURE_NO_WARNINGS 1 //青蛙跳台阶,一次可以跳一个,或者一次跳两个,跳n个台阶,共有多少种跳法。。。。 #include<stdio.h> #include<Windows.h> size_t JUMP_FLOOR(size_t count) { if (count <= 0) return 0;

Hlun的博客 476

汉诺塔问题以及青蛙跳台阶问题(函数递归思想的应用)

青蛙跳台阶,汉诺塔。

Rev_world的博客 1202

C语言每日一练——第90天:青蛙跳台阶(升级版)_一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 10 级的台阶

如果第一次跳两级的话,剩下的级台阶的跳法就是fn−2f(n-2)f(n−2);现在青蛙一次只能跳一级或两级,所以我们可以推出以下公式:咦,这玩意儿不就是我们吗?🤔只不过有一点不同的是,斐波那契数列一般是以开始的;而我们这是以开始的,少了最前面的一个1。

2501_90392091的博客 940

青蛙跳台阶问题讨论

题引: 斐波那契数列: 斐波那契数列,又称黄金分割数列,指的是这样一个数列: 0、1、1、2、3、5、8、13、21、34、…在数学上,斐波纳契数列以如下被以递归的方法定义: F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*); 斐波那契数列指的是这样一个数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765, 10946,17711.

lcc11223的博客 601

LeetCode之动态规划

动态规划学习总结

weixin_43837972的博客 170

青蛙跳台阶扩展问题(斐波那契数列问题)

《剑指offer》面试题10(关于青蛙跳台阶之斐波那契数列)扩展问题: 我们知道,当青蛙一次只能跳一阶或者两阶的时候,我们可以把问题转换为斐波那契数列用递归或者非递归的形式予以计算,但是,若青蛙一次能跳的阶数在n阶以内(包括n阶)时,又该如何计算呢? 题目: 在青蛙跳台阶的问题中,如果把条件改成:一只青蛙一次可以跳上1级台阶,也可以跳上2级…也可以跳上n级,此时该青蛙跳上一个n级的台阶总共有多少种...

weixin_43896829的博客 534
上一篇: c语言:二分法的完整补充
下一篇: c语言:递归
Code_Solitude
博客等级 码龄116天 1粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值