JavaScript算法系列之-----------------跳台阶(JS实现)

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

思路:

(1)跳一级台阶 :

1             一种

(2)跳二级台阶 :

11/2        两种

(3)跳三级台阶 :

先跳一级还有两级台阶同情况(2)  记作=>    1 (2)

先跳两级还有一级台阶同情况(1)  记作=>    2 (1)

把这两种情况加起来就是跳三级台阶的一共可能

(2)+(1)

(4)跳四级台阶 :

先跳一级还有三级台阶同情况(3)  记作=>    1 (3)

先跳两级还有两级台阶同情况(2)  记作=>    2 (2)

把这两种情况加起来就是跳四级台阶的一共可能

(3)+(2)

(5)跳五级台阶 :

先跳一级还有四级台阶同情况(4)  记作=>    1 (4)

先跳两级还有三级台阶同情况(3)  记作=>    2 (3)

把这两种情况加起来就是跳五级台阶的一共可能

(4)+(3)

...

以此类推

是不是感觉很眼熟,像不像斐波那契数列

所以可以用递归和循环实现

递归代码如下:

function jumpFloor(number)
{
    if(number === 1){
        return 1
    }
    if(number === 2){
        return 2
    }
    if(number > 2){
        return jumpFloor(number-1)+jumpFloor(number-2)
    }
}

循环的自行实现或去斐波那契数列那章看吧

原文地址:https://www.cnblogs.com/manru75/p/10448575.html

时间: 2024-11-11 06:10:38

JavaScript算法系列之-----------------跳台阶(JS实现)的相关文章

Javascript算法系列之快速排序(Quicksort)

Javascript算法系列之快速排序(Quicksort) 原文出自: http://www.nczonline.net/blog/2012/11/27/computer-science-in-javascript-quicksort/ https://gist.github.com/paullewis/1981455#file-gistfile1-js 快速排序(Quicksort)是对冒泡排序的一种改进,是一种分而治之算法归并排序的风格 核心的思想就是通过一趟排序将要排序的数据分割成独立的

JavaScript算法系列之-----------------变态跳台阶(JS实现)

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路:其实和跳台阶思路很像, (1)跳一级台阶 : 1             一种 (2)跳二级台阶 : 11/2        两种 (3)跳三级台阶 : 先跳一级还有两级台阶同情况(2)  记作=>    1 (2) 先跳两级还有一级台阶同情况(1)  记作=>    2 (1) 先跳三级台阶情况                             记作=>

剑指offer源码系列-变态跳台阶

题目1389:变态跳台阶 时间限制:1 秒内存限制:32 兆特殊判题:否提交:1906解决:1102 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=50). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 6 样例输出: 32 解法分析: 分析:用Fib(n)表示青蛙跳上n阶台阶的跳法数,青蛙

累死青蛙系列——青蛙跳台阶问题

(1)斐波那契数列 f(1) = 1 f(2) = 2 f(n) = f(n-1) + f(n-2) function Fibonacci(n) { // write code here var a=[0,1]; if(n>1){ for(var i=2;i<=n;i++){ a[i]=a[i-1]+a[i-2]; } } return a[n]; } (2)青蛙跳台阶 青蛙每次只能跳1个或2个台阶,有n阶台阶,青蛙有多少种跳法? 这要倒过来想,当在第n阶台阶的前一步时,青蛙只有两种选择,1或

JavaScript算法系列之-----------------链表反转(JS实现)

题目:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 之前一直对JS实现链表理解不了,被算法大牛指点了一下豁然开朗. function ListNode(x){ this.val = x; this.next = null; } 在JS中,this.val代表当前节点的值,this.next指向下一个节点,若this.next为null(对象),则说明该节点为链表的最后一个节点. PS:把下一个节点赋值给当前对象的next属性,通过这样的方式连接. 通过代码: function

JavaScript算法系列之-----------------斐波那契数列(JS实现)

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 递归实现: function Fibonacci(n){ if(n<0){ return -1; } if(n===0){ return 0; } if(n===1){ retunr 1; } if(n>1){ return Fibonacci(n-1)+Fibonacci(n-2); } } 递归实现效率较低,未能编译通过. 正常实现: function Fib

HTML5之2D物理引擎 Box2D for javascript Games 系列 翻外篇--如何结合createJS应用box2d.js

太久没有更新了,新年回来工作,突然有收到网友的邮件提问,居然还有人在关注,惭愧,找了下电脑上还有一点儿存着,顺便先发这一个番外篇吧,好歹可以看到真实的效果,等我考完英语,一定会更新下一章,"愤怒的小鸟篇" 此篇,并不是书中的篇符,而是通过希望通过结合实际的canvas 绘图库实现box2d物理引擎在各绘图库上应用,绘图库网上有很多现成的 如:createjs, pixi.js 等,Egret或者其它游戏引擎有自己的物理引擎扩展库,所以就不说了. 现在通过之前的学习,基本掌握了刚体等基础

剑指offer源码系列-跳台阶

这是一个斐波那契数列的变形 题目1388:跳台阶 时间限制:1 秒内存限制:32 兆特殊判题:否提交:3030解决:1226 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 5 样例输出: 8 #include<iostream> #includ

Python算法题(一)——青蛙跳台阶

题目一(青蛙跳台阶): 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 假设只有一级台阶,则总共只有一种跳法: 假设有两级台阶,则总共有两种跳法: 假设有n级台阶,那么第一步就要分为跳一步和跳两步: 跳一步,那么接下来就是跳n-1: 跳两步,那么接下来就是跳n-2: 所以,总数可以认为是f(n-1)+f(n-2). 主要代码: def frog(num): if num <= 2: return num t1, t2 = 1, 2 for _