题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。
示例 1:

    输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1.  1 阶 + 1 阶2.  2 阶

示例 2:

    输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1.  1 阶 + 1 阶 + 1 阶2.  1 阶 + 2 阶3.  2 阶 + 1 阶

求解:将 n 个台阶的上楼梯方法数设为 f (n),则可以发现:

    f (3) = f (2) + f (1),f (4) = f (3) + f (2),...f (n) = f (n-1) +f (n-2)。

即:

  • 假设先爬1阶,剩下 n-1 个台阶有f(n-1) 种可能;
  • 假设先爬2阶,剩下 n-2 个台阶有 f(n-2) 种可能,

因此爬n个台阶问题可转化成:
f(n) = f(n-1) + f(n-2)
上述公式是著名的斐波那契公式,此题可转化为求斐波那契数列第 n 项。

1、初始求解代码如下:

class Solution:def climbStairs(self, n: int) -> int:q, p = 2, 1if n == 1:return 1if n == 2:return 2for i in range(2, n):q, p = q + p, qreturn q

2、假设 f (0) = 1,则 f (2) = f (1) + f (0)。因此上述代码可简化为:

class Solution:def climbStairs(self, n: int) -> int:q, p = 1, 1for i in range(n-1):# i = 0 时,n = 2,返回 f(2); # i = 1 时,n = 3,返回 f(3); # 循环一直持续到 i = n - 2,因此输出f(n)q, p = q + p, qreturn q

leetcode每日一题——T70. 爬楼梯(易):斐波那契公式相关推荐

  1. 用C语言写爬楼梯(斐波那契数列的应用,迭代与递归)爬楼梯问题超详细,看完这一篇就够了。

    爬楼梯问题实际上就是斐波那契数列的应用,首先我们讲讲什么是斐波那契数列.因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列" ...

  2. 力扣一日一练(7)——爬楼梯(斐波那契数列)

    题目:爬楼梯(斐波那契数列) 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例: 示例 1: ...

  3. python侯先生爬楼梯_经典算法题:爬楼梯 ,以斐波那契数列来解题代码案例

    网上这题的解题思路主要有两种:动态规划 斐波那契数列 因为我们用斐波那契数列来解,所以我主要描述方法2. 斐波那契数列 又称 兔子数列, 指得是:1.1.2.3.5.8.13.21.--, 在数学上它 ...

  4. python leetcode 爬楼梯问题 斐波那契数列

    爬楼梯 问题描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: ...

  5. LeetCode 70. 爬楼梯 (递归斐波那契 | 动态规划)

    70. 爬楼梯 解法1 (暴力递归) 推出递推式子:f(n) = f(n - 1) + f(n - 2) 是一个斐波那契数列,用递归 class Solution {public int climbS ...

  6. [LeetCode-70]-Climbing Stairs(爬楼梯,斐波那契数列问题)

    文章目录 题目相关 Solution 题目相关 [题目解读] 该题就是斐波那契数列问题,可以使用递归方法实现. [原题描述]原题链接 You are climbing a stair case. It ...

  7. 70. 爬楼梯 golang 斐波那契数列

    题目 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: ...

  8. 每日一题01、02(斐波那契凤尾、淘宝网店、美国节日、分解因数)

    1.在OSI分层模型中,把传输的比特流划分为帧,是哪一层的功能(C) A 物理层 B 网络层 C 数据链路层 D 传输层 2.下面关于源端口地址和目标端口地址的描述中,正确的是(A) A 在TCP/U ...

  9. LeetCode:递归思想的延伸,从斐波那契数列到爬楼梯模型

    题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 看到这个问题的第一反应其实我想到的是排列组合的思想去解答.比如有n阶, ...

最新文章

  1. 【多权威学术机构协办】【EI、Scopus检索往届会议】先进算法控制工程方向征稿...
  2. R将字符串类型(Character)转化为因子类型(Factor)
  3. vc的速度有c语言快吗,大家帮看看,怎么回事?Delphi竟比vc++还快
  4. tplink控制上网设备_上网总有人抢网速如何解决 上网卡慢解决方法【详解】
  5. 【Python学习】 - 如何在Spyder中弹出plot绘图窗口而不是在Console中绘图
  6. 1119. Pre- and Post-order Traversals (30)
  7. FA_手工明细增加固定资产(流程)
  8. Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题...
  9. php 反射 调用私有方法,PHP通过反射方法调用执行类中的私有方法
  10. Pycharm报错解决:error:please select a valid Python interpreter 及一些基本设置
  11. 64位字长的高性能微型计算机,什么是字长字节和字长的区别
  12. 敏感型人格的特征,怎么改变敏感型性格?
  13. 2016集训队论文吉如一
  14. 台式计算机开关电源原理图,计算机开关电源原理图电路分析
  15. 用c语言输出100到200之间的素数
  16. 使用ffmpeg破解m3u8加密视频文件
  17. Go语言——cap函数详解
  18. 如何将PPT制成二维码?
  19. 如何用 Node.js 实现一个简单的 Websocket 服务?
  20. 好家伙,这几个隐藏功能,太香了

热门文章

  1. 用“生物进化论”来阐述“恶意代码进化论”
  2. 今日芯声 | 模仿“宏颜获水”?任达华遇刺意味着什么
  3. jquery validation插件
  4. 线性代数攻略(适合复习考试,零基础不挂科秘籍)
  5. C语言第二十课:实用调试技巧
  6. 这个「微信年度报告」你被骗了吗?
  7. socket error 10061错误
  8. kubernetes 1.9.2 安装步骤
  9. UI自动化测试-数据驱动(ddt)
  10. Fix8 0.6.6 发布,C++ 实现的 FIX 框架