力扣一日一练(7)——爬楼梯(斐波那契数列)
题目:爬楼梯(斐波那契数列)
假设你正在爬楼梯。需要 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 阶
使用语言JavaScript:
斐波那契数列公式法:
/*** @param {number} n* @return {number}*/var climbStairs = function(n) {var sum=0;sum=1/Math.sqrt(5)*(Math.pow((1+Math.sqrt(5))/2,n+1)-Math.pow((1-Math.sqrt(5))/2,n+1))return sum;};
分析:
斐波那契数列是一个很有名的公式,就是数列从第3项开始,每一项都等于前两项之和。这就相当于我们只需要将数值前两项的值推导出来就可以了,一开始我使用了递归的做法,没想到计算超时了。后来我直接输入斐波那契数列的公式,就直接成功了。我也尝试了一下使用数组的做法,也成功了,只有递归算法不用记忆化计算会超出计算时间。
另外两种方法代码如下:
暴力递归方法:
/*** @param {number} n* @return {number}*/var climbStairs = function(n) {var sum=0;if(n==1){return 1;}if(n==2){return 2;}sum = climbStairs(n-2)+climbStairs(n-1);return sum;};
数组方法:
/*** @param {number} n* @return {number}*/var climbStairs = function(n) {//数组方法var array=[];if (n == 0){return 1;} array[0] = 1;array[1] = 1;for (var i = 2; i <= n; i++) {array[i] = array[i - 1] + array[i - 2];}return array[n];};
力扣一日一练(7)——爬楼梯(斐波那契数列)相关推荐
- 《LeetCode力扣练习》剑指 Offer 10- I. 斐波那契数列 Java
<LeetCode力扣练习>剑指 Offer 10- I. 斐波那契数列 Java 一.资源 题目: 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N) ...
- 爬楼梯-斐波那契数列
每日算法---爬楼梯 题目: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数.示例 1:输入: 2 输 ...
- python小明爬楼梯_LintCode Python 简单级题目 111.爬楼梯 (斐波纳契数列 青蛙跳)
**设f(n)为n阶台阶的情况下,所有不同的跳法方法的总和!** 1.如果起始跳一阶的话,剩余的n-1阶就有 f(n-1) 种跳法: 2.如果起始跳二阶的话,剩余的n-2阶就有 f(n-2) 种跳法: ...
- 力扣 1414. 和为 K 的最少斐波那契数字数目
题目 给你数字 k ,请你返回和为 k 的斐波那契数字的最少数目,其中,每个斐波那契数字都可以被使用多次. 斐波那契数字定义为: F1 = 1 F2 = 1 Fn = Fn-1 + Fn-2 , 其中 ...
- 【力扣动态规划基础专题】:509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 62. 不同路径 63. 不同路径 II 343. 整数拆分 96. 不同的二叉搜索树
/** 动态规划专题:这是最简单的并且已经给出了转移方程,平时我们用dp[]数组来表示转移方程转移方程: dp[n] = dp[n-1]+dp[n-2]初始值:dp[0] = 0 , dp[1] = ...
- 用C语言写爬楼梯(斐波那契数列的应用,迭代与递归)爬楼梯问题超详细,看完这一篇就够了。
爬楼梯问题实际上就是斐波那契数列的应用,首先我们讲讲什么是斐波那契数列.因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列" ...
- python leetcode 爬楼梯问题 斐波那契数列
爬楼梯 问题描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: ...
- 斐波那契数列;递归函数;爬楼梯问题;
斐波那契数列: 例如:一个人爬楼梯,每次只能爬1个或两个台阶,假设有n个台阶,那么这个人有多少种不同的爬楼梯方法: 1阶楼梯:1种方法 2阶楼梯:2种方法 3阶楼梯:3种方法 4阶楼梯:5种方法 5阶 ...
- 斐波那契数列-爬楼梯算法
爬楼梯算法 有n级楼梯,有2种爬法,1次1级,或1次2级,问,n级楼梯有多少种爬法? 递归求解 首先,当只有一阶楼梯的时候,很显然只有一种走法:有两阶楼梯的时候,也很显然的知道有两种走法.就会有下面这 ...
最新文章
- python 获取程序运行时间
- 页面放在哪_思维制胜!PPT内容巨多的页面,这样排版更高大上
- hadoop原来是这样的!
- python定时器 是线程吗_定时器中断线程python
- Spring Boot中初始化资源的几种方式
- 人脸识别Python教学
- “天生BUFF”华硕主板冷傲ROG
- 如何在Microsoft Excel电子表格之间交叉引用单元格
- 为什么员工辞职时,领导都要象征性挽留一下?
- 性能分析 -- 各种毛刺
- C++学习路线图(新)
- 12位中年程序员:代码一敲十年,收入虽高前途摇摆
- win32 opengl画线
- Phonetic symbol 辅音 - 清辅音 -- /ʃ/
- 筹码底部共振(同花顺指标 副图 源码 测试图)
- asp.net师电子化信息库的设计与实现(源代码+论文)ASP.NET汽车销售管理系统的设计与开发(源代码+论文)
- weblogicT3反序列化之CVE-2017-3248CVE-2018-2628CVE-2018-3245
- 银河麒麟操作系统开机进入grub提示符界面
- Bootstrap-30分钟就能上手的Bootstrap教程【史上最全】
- Java 重载(什么是重载?什么时候重载?重载有什么好处?)