【剑指offer】10.Fibonacci数列、跳台阶

睿尔曼复合机器人之底盘操作流程 控制键”按下后,可在键盘上通过‘i’(向前),‘k’(向后),‘j’(向左旋转),‘l’(向右旋转)四个按键对底盘进行运动控制。选中禁⾏线功能后,使⽤⿏标在界⾯内点击选择起点,继续在其他地⽅点击,两点之间会连成⼀条线,可以进⾏多次连续点击,形成连续线条。4)扫图完成后,软件会重新启动,返回到监控页面,点击“激光”可看到当前机器激光扫描的实时数据,在页面上表现为红色边界线,点击菜单栏“控制”键使底盘在一定范围内运动,扫描到尽可能多的边界线,可发现与实际地图的黑色边界线不同,需要进行手动校正。 阅读详情

【剑指offer】10.Fibonacci数列、跳台阶

题目:

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

思路1:递归

利用递归,自顶向下求解。

f(1)=1f(1) = 1f(1)=1和f(2)=2f(2)= 2f(2)=2容易理解。

难就难在如何理解 f(n)=f(n−1)+f(n−2)f(n)= f(n-1)+ f(n-2)f(n)=f(n−1)+f(n−2)。拿n=10来说,f(10)=f(9)+f(8)f(10) = f(9)+f(8)f(10)=f(9)+f(8)

要跳到第10个台阶,不考虑前面一大截怎么跳的,只考虑有几种方法能跳到10,有两种:一是从第九个台阶跳一阶,二是从第八个台阶跳两阶(只有这两种跳法)。故有f(10)=f(9)+f(8)f(10) = f(9)+f(8)f(10)=f(9)+f(8)

这就不难理解为什么f(n)=f(n−1)+f(n−2)f(n)= f(n-1)+ f(n-2)f(n)=f(n−1)+f(n−2)

代码:

public static int jump(int n)
    {
        if(n == 1)
            return 1;
        else if(n == 2)
            return 2;
        else
            return jump(n - 1) + jump(n - 2);
    }

思路2 :迭代(动态规划)

自底向上求解。

该题是一个费波纳茨数列求解。

费波纳茨数列公式:
f(n)={1,11,2f(n−1)+f(n−2),other f(n) = \begin{cases} 1,& 1\\ 1,& 2\\ f(n-1)+f(n-2),& other \end{cases} f(n)=⎩⎪⎨⎪⎧​1,1,f(n−1)+f(n−2),​12other​
已知f(1)=1,f(2)=2f(1) = 1,f(2)=2f(1)=1,f(2)=2

可计算出f(3),然后根据f(2)和f(3)的值计算出f(4)…

f(n)=f(n−1)+f(n−2)f(n)= f(n-1)+ f(n-2)f(n)=f(n−1)+f(n−2)

代码:

public static int jump2(int n)
    {
        int fn1 = 1;
        int fn2 = 2;
        int fn3 = 0;
        if(n == 1)
            return 1;
        else if(n == 2)
            return 2;
        else
        for (int i = 3;i <= n;i++)
        {
            fn3 = fn1+fn2;
            fn1 = fn2;
            fn2 = fn3;
        }
        return fn3;
    }
JS实例(三)图片的缓慢放大和缩小   我们经常能看到在一些网站中可以通过按钮实现对图片的放大或者缩小,也有可能是鼠标经过时图片放大。在本例中就是通过JavaScript实现图片的放大和缩小。   首先是进行简单的页面布局 1 <div class="imagedispose"> 2 <img src="1.jpeg" id="imaged" width="400px" height="3... 阅读详情

相关推荐

Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇

Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇 文章目录Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇前言一、数据库的安装前准备,前提是没有安装过!!!二、仅安装数据库软件(数据库运行环境)三、添加数据库实例四、设置监听程序,让数据库可以通过网络访问五、为目标数据库设置网名总结 前言 如果需要安装包:联系我看到会给你链接,因为现在官网已经不提供10g,11g的安装包了,在网盘保存望悉知(回复不会很及时,下班看到会回复敬请谅解)。 提示:以下

zhx__的博客 5630

剑指offer(三) 斐波那契数列+跳台阶+变态跳台阶

记录并复习一下剑指offer的部分题型~ 文章目录斐波那契数列跳台阶变态跳台阶 斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。 n<=39 斐波那契数列是指一个:1,1,2,3,5,8,13,21,34…的数列,这个数列从第三个数开始等于前两个数之和。 题目中要求从0开始,第0项是0,第1项是1,那么我们可以通过递归来计算。 public class Solution { public int Fi

LinJy 432

android6 usb默认文件管理,不弹RSA配对提示框

本文修改针对 高通 Android6.0.1 出user版本时 https://www.cnblogs.com/Jokeyyu/p/7424262.html http://blog.csdn.net/sinc00/article/details/44957943 diff --git a/frameworks/base/packages/SystemUI/src/com/android...

木叶风的博客 692

剑指offer第8题:跳台阶

剑指offer第8题:跳台阶题目描述跳台阶分析源码递归方法递推方法 题目描述 跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 分析 根据题意,青蛙一次可以跳1级台阶,2级台阶,那么要跳到n级有两种情况: 1.先跳到n-1级,最后一步跳上1级到n级。 2.先跳到n-2级,最后一步跳上2级到n级。 假设跳到n级有F(n)种...

可爱的小腊肉 479

翻倍密码系统主图指标-行情买卖以及持股-翻倍密码买点-获利了结,通达信炒股软件指标公式

华森制药,上图案例走势,低位出现“开始潜伏”信号,进场红色K线持股待涨,进入“翻倍密码买点”,开启紫色K线的持续上涨,目前也达到了翻倍行情,还没出现“获利了结”的出场信号。这套操盘系统,即便出现信号没走出翻倍行情,也都是可以全身而退,获利出局,或者微微止损出场,并不代表每一个波段都能翻倍,但是走翻倍行情,你按照信号参与或持仓是不会错过的。用这个操盘系统操作,你也不需要天天的盘中看盘,不需要担心盘中的震荡,只要趋势不变,哪怕是偶尔出现跌停,也不影响行情的继续上涨,这都是上涨途中的正常调整。

weixin_69760830的博客 3681

基于ABCDRez的激光谐振腔设计与热透镜效应仿真实践

本文详细介绍了如何利用ABCDRez代码包进行激光谐振腔设计与热透镜效应仿真。通过ABCD矩阵理论和高斯光束q参数,该工具能有效模拟热透镜动态变化对腔稳定性的影响,指导腔型优化与热补偿设计,是固体激光器预研与调试的高效辅助手段。

weixin_29093017的博客 290

剑指Offer:数列求和及斐波那契数列问题 ---递归算法思想

剑指Offer(四十七):求1+2+3+…+n 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 思路:使用递归方法即可 class Solution { public: int Sum_Solution(int n) { int result = n; // &amp...

Tiger数学之家的博客 531

解构LOL数值平衡:从基础公式到实战决策的深层逻辑

本文深入解析了《英雄联盟》数值平衡的底层逻辑,从基础攻击力公式到经济系统设计,揭示了MOBA游戏背后的精密数学架构。通过实战案例展示护甲减伤、技能伤害建模等核心机制,探讨装备定价与战斗节奏的数值关联,帮助玩家理解版本更新中的平衡艺术。

weixin_42540248的博客 347

《剑指offer》跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 分析:当n = 1, 只有1种跳法;当n = 2时,有2种跳法;当n = 3 时,有3种跳法;当n = 4时,有5种跳法;当n = 5时,有8种跳法;.......规律类似于Fibonacci数列                             Java代

小容echo在努力奋斗 550

DoDAF2.0与UAF1.0与UPDM与IBD与Rhapsody与MagicDraw与SysML

参考:fr=ge_alafr=ge_ala。

计算机辅助工程 1420

【推荐100个unity插件】基于关节物理控制的自行车、电动车、摩托车模拟解决方案——Simple Bicycle Physics

摘要 "简易自行车物理"是Unity的自行车模拟资源包,支持Animation Rigging,实现基于关节物理的自行车控制。兼容所有平台和渲染管线,包含预制体、材质、脚本等资源。核心脚本Bicycle Controller管理自行车物理属性,支持自定义角色设置和移动端控制。安装后,用户可快速配置骑行场景,调整转向、速度、重心等参数,并支持地面贴合、兔跳等功能。适用于开发各类自行车模拟游戏和应用。 (字数:149)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1366

《剑指offer》10--斐波那契数列[C++]

斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 递归是将一个问题划分成多个子问题求解,动态规划也是如此,...

贫道绝缘子的博客 336

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

青蛙跳台阶和变态跳台阶

青蛙跳台阶和变态跳台阶(python、剑指Offer) 一、题目描述 青蛙跳台阶题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 变态跳台阶题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 二、青蛙跳台阶算法 类似于Fibonacci数列的算法问题...

qq_37395012的博客 782

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

剑指Offer||变态跳台阶

剑指Offer-09 变态跳台阶 题目描述: 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级……也可以跳n级。求总共有多少总跳法,并分析算法的时间复杂度。 分析: 用Fib(n)表示跳上n阶台阶的跳法数。如果按照定义,Fib(0)肯定需要为0,否则没有意义。但是我们设定Fib(0) = 1;n = 0是特殊情况,通过下面的分析就会知道,强制令Fib(0) = 1很有好处。ps. Fib(0)等于几都不影响我们解题,但是会影响我们下面的分析理解。 当n = 1 时, 只有一种跳法,即1阶跳:Fib

HuiDiExAg的博客 154

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

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

剑指offer(8)青蛙跳台阶

package com.jianzhioffer.frogjump; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * 题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。 求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)...

hxl0925的博客 99

剑指offer05--台阶有多少中跳法

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 方法 其实就是fibonacci数列,不同的是,fibonacci数列n=1与n=2时都输出1,但是这题n=1时输出1,n=2时输出2 class Solution { public: int jumpFloor(int number) { if(nu...

spec_yue 163

剑指Offer #08 跳台阶(递推)

剑指Offer面试题,十年磨剑只为今朝!

Veggie的博客 2万+

青蛙跳台阶问题

题目:一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。 我的思路:最开始我的思路是把这个看成是一个数学问题,n=i*1+k*2先把所有可能满足这个公式的i和k求出来。然后在对i和k做排列组合。很明显i的范围应该是0 public int JumpFloor(int target) { int step = 0; for (int

蜗牛的专栏 5189

【剑指offer】跳台阶

''' 跳台阶,一次 1 or 2步 变态跳台阶,一次1, 2,n阶 ''' class Solution: def Fibonacci(self, n): if n <= 2: return n dp =[0]*n dp[1] = 1 dp[2] = 2 for i ...

sisteryaya的博客 171

剑指offer(7)-斐波那契数列

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。解题思路这个题可以说是迭代(Iteration) VS 递归(Recursion), f(n) = f(n-1) + f(n-2),第一眼看就是递归啊,简直完美的递归环境,递归肯定很爽,这样想着关键代码两三行就搞定了,注意这题的n是从0开始的:if(n<=1) return n; else return Fibo

pelsor的专栏 669

剑指offer面试题9-斐波那契数列问题

问题描述 写一个函数,输入n,求斐波那契(Fibonacci)数列第n项。 斐波那契数列定义为:f(n) = f(n-1) + f(n-2) (n>1) ,其中f(0)=0, f(1)=1。 递归解法 斐波那契数列是一个典型的递归解法,代码如下: public int Fibonacci(int n) { if (n == 0) { return 0;

我的博客 397

剑指offer:Fibonacci 数列

剑指offer:Fibonacci数列 Fibonacci 数列由下式定义: 思路: 1.直接将上式转化为代码,使用递归的方式。缺点:效率太低,容易造成栈溢出。(可以看到有很多重复计算的) 2.使用循环自下而上计算,时间复杂度是O(n). 3.使用公式,这个方法的时间复杂度是O(logn),因为乘方运算可以使用递归每次算其的指数的一半。 实现: 方法2: cla...

starflyyy的博客 206

剑指offer——变态跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路, 要看着这个就必须了解普通的跳台阶,每次可以跳一个或两个,假如青蛙在第n个台阶,那么他可能从第n-2个台阶跳过来的,也可可能是从第n-1个台阶跳过来的,记跳到第n个台阶有f(n)种方法,那么f(n)=f(n-1)+f(n-2); 现在可以一个跳任意个,那么他就可能从之...

hg_zhh 364

剑指offer 面试题10 斐波那契数列

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 常用的有: 递归法,O(2^n),大量重复的计算 动态规划法,O(n),下面的代码用这种 矩阵运算法,O(logn), 不太常用 #include <iostream> #include <vector> using namespace std...

hello_my_coder的博客 226

剑指offer--07-10--斐波那契数列

       这4道题目都是有关斐波那契数列的题目,这些题目的难点不在代码上,而是在于如何发现他们是有关斐波那契数列的。 07.斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 class Solution: def Fibonacci(self, n): ...

海军上将光之翼的博客 281

[剑指Offer]1.跳台阶

题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法。 样例输入: 5 样例输出: 8 /**************************

SmartSi 1997
上一篇: 【剑指offer】04.二维数组中的查找
下一篇: 【剑指offer】11.旋转数组的最小数字
「已注销」
博客等级 码龄7年 1粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值