一个小青蛙,可以一次跳两节楼梯,也可以一次跳一节楼梯,请问他如果要跳101节楼梯,一共有几种跳法方案?

问题的描述很简单,看到这个题目的时候,我首先想到的就是举例分析一波,比如当n=1的时候有几种方案,当n=2的时候有几种方案等等….

我们首先分析一波,当n=1的时候,这个时候小青蛙只有一种跳法,就是跳上台阶1,然后结束,当然这并不能帮助我们归纳总结,然后我们继续分析

当n=2的时候,这个时候,小青蛙可以跳上台阶1,也可以跳上台阶2结束,然后台阶1呢,也可以跳上台阶2然后结束,我们发现,如果光靠想象的话,很难发现其中的规律,这个时候我们需要借助图形来帮助我们.

下图是我自己用笔画的图形,建议在这种时候还是用笔在纸上写写画画来帮助我们

灵魂画手!!!

经过举例我们发现,得到的结果组成的数,特别像菲波纳斯数列,从n=3开始,每一项都等于前两项的和,为了验证一下我们的结论,我们可以在推导一下n=5的时候,一共有几种情况,很显然我们的结论是正确的.这就是一个求菲波纳斯数列的题,那么好,这个时候有人可能会说了,菲波纳斯数列是啥?能吃么?好,那我就从另外一个角度去分析这个题目

假如说,小青蛙现在已经跳上了第4个台阶,那么它上一个台阶是那一个呢?要想回答这个问题,我们还需要在看一下题目的介绍,题目说,小青蛙一次只能跳一个台阶或者跳两个台阶,那么这个答案很简单了,如果他现在在4,那么它的上一个台阶一定是3或者是2.

然后我们在思考.如果他现在处在第3个台阶呢,那么它的上一个台阶一定是2或者是1.

那你也许会有疑问了,知道了这个他的上一个台阶有啥用呢,我给大家举一个栗子大家就明白了

请问,1+1等于多少呢?如果我在问你,1+1+1的结果呢,很显而易见,我要告诉大家的不是这个等式的结果是多少,我想告诉大家的是算的过程,我们在算出来1+1之后,如果在算1+1+1,我们只需要将1+1的结果在加上1就好,反过来我们理解一下,如果你想算出来1+1+1,那我们是不是只需要算出1+1的结果呢,

类比到我们的这个算法,如果你想算出来小青蛙跳上第4个台阶一共有几种情况,那我们只需要算出来小青蛙跳上第3个的种类加上跳上第2个台阶的种类即可归纳出来的数学公式就是f(n)=f(n-1)+f(n-2).

我们把这个思路由代码实现出来,很简单,我们首先用递归去做.function jump(n) {

if (n === 1 || n=== 2) {

return n

}

return jump(n - 1) + jump(n - 2)

}

代码很简单,但是有一个很大的问题想算出来n=101,根本算不出来,浏览器执行的时间太长,当然,如果你愿意等,浏览器还是可以算出来的.

其实这个代码有一个很大的弊端就是,他会一直重复性的去计算,假设说我们已经算出来f(4)了,但是当我们在算f(5)的时候,这个函数又会从新去算一遍f(4),根据这个思路我们可以优化一下,我们通过一个数组去记录f(n),这样就不会重复性的去计算.function jump(n, memory = []) {

if (n === 1 || n=== 2) {

memory[n] = n

}

if (memory[n] !== undefined) {

return memory[n]

} else {

memory[n] = jump(n - 1, memory) + jump(n - 2, memory)

}

return memory[n]

}

改善后的代码,可以’ 秒’算出来结果了,但是我们的追求不能止步于此,我们在优化一下代码,这个代码是通过递归去做的,其实递归是很消耗性能的,我们直接通过循环去做

function jump(n) {let arr = [1, 2]

for (let i = 2; i< n; i++) {

arr [i] = arr[i - 1] + arr[i - 2]

}

return arr[n - 1]

}

最终我们对比通过循环代码和优化后的递归算法执行的时间,我们计算当n = 1000的时候的结果

结果显而易见.

最后分享给大家一句话: 大佬不是一天练成的!!!加油,咸鱼总有翻身的一天,就算翻身还是咸鱼,那它也是一条会翻身的咸鱼!!!

青蛙上楼梯matlab,一个小青蛙,可以一次跳两节楼梯,也可以一次跳一节楼梯,请问他如果要跳101节楼梯,一共有几种跳法方案? - 菲波那切数列...相关推荐

  1. 数楼梯--高精度递推、菲波那切数列

    题目描述 楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶. 编一个程序,计算共有多少种不同的走法. 输入格式 一个数字,楼梯数. 输出格式 输出走的方式总数. 输入样例 4 输出样例 5 说明/ ...

  2. 求菲波那切数列数列第n项三种方法小结

    菲波那切数列数列的应用场景还是比较多的,比如可以在考试的时候考你递归啊,早上碰到的一道题就是这样,骄傲地写下递归方程,结果TLE了,然后旁边的大神给我说了一个叫滚动数组的东西...题目是这样的You ...

  3. 剑指offer:菲波那切数列

    一.题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39 解题思路: 菲波那切数列:指的是这样一个数列:1.1.2.3.5.8.13.21.34.- ...

  4. php菲波那切数列,php实现菲波那切数列和杨辉三角

    1.递归  显示斐波那契数列 function recursion($num){ //判断是否小于0 if($num<0){ return -1; } if($num==1){ return 0 ...

  5. 菲波那切数列案例演示(递归方法)

    /** * 功能:菲波那切数列案例演示(递归方法) * 详情:斐波那契数,亦称之为斐波那契数列(意大利语: * Successione di Fibonacci),又称黄金分割数列.费 * 波那西数列 ...

  6. python函数-返回菲波那切数列for,range,append

    #返回菲波那切数列的列表 def fibs(num):     fibs=[0,1]     for i in range(num):         fibs.append(fibs[-2]+fib ...

  7. 计算菲波那切数列前50项

    计算菲波那切数列 前50项 public class Main {public static void main(String[] args) {// temp 1 表示第一个数 temp 2 表示第 ...

  8. 阶乘 c语言 fushu,JS递归实现阶乘和菲波那切数列

    当我们需要使用递归来完成某些操作的时候,我们先要了解什么是递归 什么是递归? 递归,就是在运行的过程中调用自己. 一般来说,递归需要有边界条件.递归前进段和递归返回段. 当边界条件不满足时,递归前进: ...

  9. 008 -菲波那切数列

    对第n位菲波那切数列的值进行求解 菲波那切数列 (1)递归方法实现 //递归实现斐波那契数列public static int calculateOne(int num) {if(num==0)ret ...

最新文章

  1. 年底了,没啥好送的,送个1T移动硬盘吧~
  2. 现代 JavaScript 函数库 usuallyjs 的安装和使用
  3. 第三周项目三-输出星号图(1)
  4. Windows Phone 8 企业应用部署指南(二)
  5. BZOJ.1029.[JSOI2007]建筑抢修(贪心)
  6. Struts项目中引入了过滤器filter后出现中文乱码情况
  7. [] ubuntu 14.04 搜狗拼音输入法安装
  8. SpringMVC返回JSON格式数据
  9. java单元测试的编写及运行方法
  10. 欧姆龙cp1h指令讲解_欧姆龙cp1h常用指令学习(十五)网络通讯指令SEND,RECV,CMND...
  11. 每日小结(就不平衡问题探讨)
  12. 银耳椰椰——Alpha冲刺Day08
  13. [515]歌曲识别-dejavu-python
  14. MFC 图标 icon 如何制作?
  15. java通信—网络聊天室网络画板(简陋版)
  16. Android获取系统相册图片选中地址,获取手机中的所有图片地址自定义相册
  17. 漫谈Web Feed、RSS、原文链接和转贴
  18. ZDNS联合中兴为埃塞俄比亚建设国家顶级域名系统
  19. css选择器优先级及权重计算
  20. ES聚合查询详解(二):桶聚合

热门文章

  1. Android写文件到手机中
  2. Thrift源码解析(二)序列化协议
  3. cytoscape安装java_Cytoscape史上最全攻略
  4. 如果有不限额度,稳定的Facebook广告账号,你也能爆单?!
  5. VCU 整车控制器应用层模型VCU模型,整车控制器基于工具包快速原型开发
  6. 网络安全笔记-POC与EXP的Python实现
  7. POJ3323 Bloxorz II BFS
  8. A NIR-to-VIS face recognition via part adaptive and relation attention module阅读笔记
  9. 【智能优化算法】基于凌日算法求解单目标优化问题附matlab代码Transit Search Optimization Algorithm
  10. 色彩鲜艳摄影调色效果lr预设