题目:一只青蛙一次可以跳 1 级台阶,也可以跳 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

这道题还被 ITEye 放在了博文视点杯有奖答题活动里面。

我提供三种解法。

1、递归求解:

青蛙每跳一次前,有这样三种情况:

(1)只剩 1 级或 0 级台阶了,只能跳一步或者无法再跳了,那么这条路也走到了终点,走法的种类数可以加 1;

(2)可以走 2 级台阶;

(3)可以走 1 级台阶。

于是递归方法求解:

2、概率论思路求解:

首先把问题抽象成简单的数学模型,设 2 步台阶跳了 x 次,1 步台阶跳了 y 次,那么:

2x + y = n

于是,当 x = i ,可知 x >= 0 ,且 x < n/2(向下取整),设某时刻的 x = i ,那么有 y = n – 2 * x ,于是,总共需要走 z = i + n – 2 * x 步。

这时,问题即转化为:

z 步骤中,有 x 个两步,y 个一步,相当于 z 个空当,由 x、y 去填充,那么不同填充方法的数目符合概率公式:

C(x,z) = z! / ((z-x)!x!)

即从排列 z 中取其中 x 个数的种类,x 内部无序:

3、数学归纳法求解:

如果 n=1,总步数 f(n)=1;如果 n=2,总步数 f(n)=2。

另一方面,当 n>=3,当前还剩的步数 f(n),如果接下去跳一步,那么还剩下的步数是 f(n-1);如果接下去跳两步,那么还剩下的步数是 f(n-2),故:f(n)=f(n-1)+f(n-2)。

现设 s3=f(n),s2=f(n-2),s1=f(n-1),从时间、空间复杂度来说,这也是最简单的一种方法:

聪明的你,还有什么办法?

欢迎和我讨论。 :)

—————————————————————————————————————-

补充:

跳到第 N 级话,

可以先跳 N-1 级,再跳 1 级;

也可以先跳 N-2 级,再跳 2 级。

所以 f(n)=f(n-1)+f(n-2),就是斐波那契数列。

既然都知道是斐波拉契数列了,那就给个通式吧:

F(N) =

((5+5^(1/2))/10)*(((1+5^(1/2))/2)^n) +

((5-5^(1/2))/10)*(((1-5^(1/2))/2)^n)

N >= 1

时间复杂度 O(log n),因为求一个数的 n 次方,可以以时间复杂度为 log n 的方式来计算求解。

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》

×Scan to share with WeChat

一只青蛙跳向三个台阶_青蛙跳台阶问题的三种解法相关推荐

  1. 一只青蛙跳向三个台阶_青蛙跳台阶

    关于本题,前提是n个台阶会有一次n阶的跳法.分析如下: f(1) = 1 f(2) = f(2-1) + f(2-2)         //f(2-2) 表示2阶一次跳2阶的次数. f(3) = f( ...

  2. 微信跳一跳python全部代码_微信跳一跳python代码

    今天早上有些人嘲笑我手残 mdzz# -*- coding: utf-8 -*- import os import time import numpy as np import matplotlib. ...

  3. python对象三个特性_百度资讯搜索_python对象三个特性

    金生水起程序猿 2020年11月22日 16:26大纲(面向对象的三大特性) 封装性继承性多态性 封装性 封装隐藏了对象的属性和方法内部实现细节,仅对外提供公共访问方式,类的内部可以访问,外部不可以访 ...

  4. 新华三的背景_星际联盟一行莅临新华三集团杭州总部,展望分布式存储广阔发展空间...

    数字经济背景下,分布式存储作为"新基建"的重要技术,为数字经济时代构筑了最坚实的底层设施.在突如其来的疫情期间,IPFS分布式存储由于具备永久.去重复.去中心.点对点等技术特征,发 ...

  5. 新华三的背景_开放融合创新:新华三全力支撑运营商5G赋能百业

    2020年我国5G建设进入快车道.工信部最新数据显示,截至今年10月,我国已累计开通5G基站超过70万个,终端连接数超过1.8亿,提前完成全年60万个5G基站的目标.无论是从基站数还是用户数来看,我国 ...

  6. 新华三的背景_新华三的背景_开放融合创新:新华三全力支撑运营商5G赋能百业...

    2020年我国5G建设进入快车道.工信部最新数据显示,截至今年10月,我国已累计开通5G基站超过70万个,终端连接数超过1.8亿,提前完成全年60万个5G基站的目标.无论是从基站数还是用户数来看,我国 ...

  7. python跳一跳脚本详解_微信跳一跳游戏 python脚本辅助得高分

    微信小程序一时间火爆朋友圈,关键是还有排行榜!游戏操作简单,可直接根据电脑识别,用python写出自动跳辅助脚本,本想动手写下,索性网上有大神写了现成脚本,修改了一小部分参数,就可以稳定使用了霸榜没有 ...

  8. python微信使用教程全图_微信跳一跳python怎么刷分_微信跳一跳python使用教程_飞翔教程...

    最近,跳一跳,可以说是火爆了微信好友圈,Github大神wangshub分享了一个针对该游戏的开源项目,也就是一个Python脚本程序可以刷很高的分,下面飞翔铭月为大家带来跳一跳python使用教程. ...

  9. python学法用法 自动刷分_微信跳一跳python怎么刷分_微信跳一跳python使用教程

    微信跳一跳python怎么刷分?要知道,游戏中这个Python脚本程序可以刷很高的分数,所以接下来小编要为大家介绍下python使用教程! 微信跳一跳python使用教程 工具介绍 Python 2. ...

最新文章

  1. python培训班 北京-北京python培训机构那个好?这几个坑千万别踩
  2. 阿里巴巴常考面试题及汇总答案
  3. String类能被继承吗,为什么?
  4. FreeEIM 小插件 dwzjzx v2.1001 2013 下载
  5. 罗永浩直播带货二手iPhone 11:1700台秒售光!
  6. python如何处理inp文件_python 之文件操作
  7. 验证注册页面信息(JavaScript)
  8. jz2440裸机开发与分析:S3c2440ARM异常与中断体系详解8---定时器中断程序示例
  9. 脉冲响应函数方差分解Eviews
  10. 通向Golang的捷径【20. 使用 Go 语言的 GAE】
  11. Carte+kettle+mysql性能问题定位分析记录
  12. 三天打鱼两天晒网python程序_三天打鱼两天晒网
  13. Android手机APN简介
  14. MIME (多用途互联网邮件扩展类型)
  15. latex—中文目录乱码
  16. 【Bluetooth蓝牙开发】九、BLE协议之GATT
  17. send/sendto和recv/recvfrom各自的区别
  18. SSL应用系列之三:CA证书颁发机构(中心)安装图文详解
  19. MacOS Monterey 12.2.1 (21D62) OC 0.7.8 / Cl 5144 / PE 三分区原版黑苹果镜像
  20. python快速入门【五】---- 面向对象编程、python类

热门文章

  1. 【linux系统编程】剖析shell运行原理
  2. 9 10次c语言上机作业答案,第十五次上机作业带答案
  3. 7种方式,教你提升 SpringBoot 项目的吞吐量
  4. 错误记录(12):No 'Access-Control-Allow-Origin' header is present on the requested resource.
  5. mac破解wifi密码
  6. vue动态加载静态资源
  7. spring 14-Spring框架JDBC操作
  8. homebrew 安装 formula 的不同历史版本——以安装 node 为例
  9. [USACO14JAN]Recording the Moolympics
  10. python与数值计算环境安装