美文网首页让前端飞
【算法】爬楼梯(JavaScript实现)

【算法】爬楼梯(JavaScript实现)

作者: 陈小俊先生 | 来源:发表于2017-07-22 23:19 被阅读0次

有一个楼梯,你一次只能往上走一阶或者两阶。请编写函数 climbStairs,它接受一个整数 n 作为参数,表示这个楼梯有多少阶。请你返回一个整数,表示这个楼梯一共有多少种走法。例如:

climbStairs(1) // => 1
climbStairs(2) // => 2
climbStairs(3) // => 3
climbStairs(10) // => 89

不难发现这道题思想其实是斐波那契数列

F(1)=1,F(1)=2, F(n)=F(n-1)+F(n-2)(n>2,n∈N*)

因此我们可以直接用递归求解:

const climbStairs = (n) => n < 3 ? n : climbStairs(n-1) + climbStairs(n-2) 

如果直接用不作处理的递归求解的话,很明显是不可取的,但次数多时,调用的次数太多将导致时间超时。

仔细观察一下,n > 2时,每一次的结果都可以根据前两次的结果得出,因此递推的思想出来了,我们可以用递推求解。

const climbStairs = (n) => {
  // 用一个数组保存每一次的结果
  let arr = new Array(n)
  for(let i = 1; i <= n; i++) {
    if(i < 3) {
      arr[i - 1] = i
    } else {
      // 逐一递推得到结果
      arr[i - 1] = arr[i - 2] + arr[i - 3]
    }
  }
  return n <= 0 ? 0 : arr[n - 1]
}

相关文章

  • 【算法】爬楼梯(JavaScript实现)

    有一个楼梯,你一次只能往上走一阶或者两阶。请编写函数 climbStairs,它接受一个整数 n 作为参数,表示这...

  • 几种排序算法浅析--JavaScript

    算法好难啊!写点简单的。然后用JavaScript实现。 排序算法(Sorting Algorithm) 概念 一...

  • JavaScript模拟图操作

    JS操作实现无向网的Prim算法 最后输出结果如下: 其中例子中的图如下: JavaScript实现Dijkstra算法

  • 排序算法总结

    JavaScript实现十大排序算法,代码+动图+在实现代码的时候遇到的坑 冒泡算法 (1) 实现思路 不断的重复...

  • 斌斌学院JS-task5

    任务目的 学习与实践JavaScript的基本语法、语言特性 练习使用JavaScript实现简单的排序算法 任务...

  • 递归算法之-爬楼梯

    一、爬楼梯算法递归实现:假设一个楼梯有N阶台阶,人每次最多跨M阶,求总共的爬楼梯的方案数例如:1-100的台阶,每...

  • Day07 JavaScript(Algorithm)

    Free Code Camp的JavaScript算法 翻转字符串(Reverse a String) 实现:先把...

  • JavaScript实现的9大排序算法

    笔试面试经常涉及各种算法,本文简要介绍常用的一些算法,并用javascript实现。 1、插入排序 1)算法简介 ...

  • 第20章 动态规划入门

    1、蒜头君爬楼梯(一) 算法分析 时间复杂度 Java 代码 2、蒜头君爬楼梯(二) 算法分析 时间复杂度 Jav...

  • 周常2 算法题4道、react ssr 原理实践、koa-rou

    周常 算法题 java 实现1.爬楼梯(斐波那契数列)2.位1的个数3.实现 Pow(x, n) x 的 n 次幂...

网友评论

    本文标题:【算法】爬楼梯(JavaScript实现)

    本文链接:https://www.haomeiwen.com/subject/ualpkxtx.html