Question

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

知识点详解

题目分析

这个题目与前一篇看起来很像。在上一题中限定了青蛙一次跳台阶的阶数,要么一阶要么两阶,我们分析最终得出是斐波那契数列。那么这道题又是什么数学模型呢?

假设台阶为n级,青蛙可以通过一次或者多次来完成跳跃。

跳一次:从起点直接跳到终点。

跳多次:从起点跳了若干步后(先到达 1 ~ n-1 级的中间任一级)再跳到n级。

所以最终青蛙的跳数可以这样表述: 跳到 1级 ~ n-1级 每级可能的方法数(再跳到n级) + 1(直接跳到n级)

即,F(n)可以表示为: F(n) = F(n-1) + F(n-2) + … + F(1) + 1

又因为 F(n-1) = F(n-2) + F(n-3) +…_F(1) + 1

进而可以转化为 F(n) = F(n-1) + F(n-1)

最终可得到 F(n) = 2F(n-1)

题目分析完了,答案也就出来了,接下来就是具体的代码。

解法一def jumpFloorII(number):

if number < 2:

return number

return 2 * jumpFloorII(number-1)

解法二

我们还可以借助lambda函数来实现,一行代码搞定fII = lambda n: n if n < 2 else 2 * fII(n - 1)

解法三

其实在仔细分析后不难发现n级台阶的跳法还表示为2的(n-1)幂,所以就可以直接写成:def jumpFloorII(number):

return 2**(number-1)

Answer

分析过程及具体代码见上文。

后记

两个相似的青蛙跳台阶问题,得到的结果却是完全不同的。在面试过程中一定要看清题目!其实只要分析出题目所对应的数学模型,问题也就会迎刃而解

python一只青蛙一次可以_Python面试题系列之11 变态青蛙跳相关推荐

  1. python运行时间只算快的吗_Python 疑难问题:[] 与 list() 哪个快?为什么快?快多少呢?...

    本文出自"Python为什么"系列,请查看全部文章 在日常使用 Python 时,我们经常需要创建一个列表,相信大家都很熟练了吧?# 方法一:使用成对的方括号语法 list_a = ...

  2. python括号匹配o(1)复杂度_Python面试题:使用栈处理括号匹配问题

    括号匹配是栈应用的一个经典问题, 题目 判断一个文本中的括号是否闭合, 如: text = "({[({{abc}})][{1}]})2([]){({[]})}[]", 判断所有括 ...

  3. python实现excel筛选功能并输出_Python商务办公系列——pandas实现Excel筛选和编辑...

    写在前面 各位大大,晚上好,我想死你们了!相信看这两期文章的朋友可能会注意到,这两期文章的开头都附带了小编自己的个人博客网址,没错,正是在这几周,小编终于完成了对于自己博客的搭建工作,以后小编会在微信 ...

  4. python语言由ps f组织所有_python面试题100.docx

    Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def fun(a): a = 2 fun(a) print(a) # 1 代码二: a = ...

  5. python多个装饰器执行顺序_Python面试题之多个装饰器执行顺序

    疑问 大部分涉及多个装饰器装饰的函数调用顺序时都会说明它们是自上而下的,比如下面这个例子:def decorator_a(func): print 'Get in decorator_a' def i ...

  6. python题库刷题训练软件_Python基础练习100题 ( 11~ 20)

    刷题继续 上一期和大家分享了前10道题,今天继续来刷11~20 Question 11: Write a program which accepts a sequence of comma separ ...

  7. python软件工程师面试题目及答案_Python面试题及答案汇总整理(2019版)

    发现网上很多Python面试题都没有答案,所以博主花了很长时间搜集整理了这套Python面试题及答案,由于网上的Python相关面试题大多数都是2019年的,所以我这个也是2019版的,哈哈~ 1.一 ...

  8. python第七关再来一盘_Python爬虫自学系列(七) — 项目实战篇(一)

    文章目录 前言 流程 第一步,打开网站 第二步,分析网站 分析json包 获取数据并简单处理 前言 之所以标题不说是爬什么网,主要是怕大家看了标题以为是之前那篇的返稿.其实不是啊. 这次爬的是腾讯的暑 ...

  9. python输出斐波那契数列_python面试题之如何用Python输出一个斐波那契数列

    [BZOJ1623] [Usaco2008 Open]Cow Cars 奶牛飞车 贪心 SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. ...

最新文章

  1. Oracle_Rac_BackgroudProcess
  2. POJ 2431 Expedition 优先队列
  3. 教你两种数据库覆盖式数据导入方法
  4. 【程序员面试宝典】递归之两个字符串连接次序问题(P83)
  5. Exchange2003反病毒
  6. Python开发的一个IDE推荐,Sublime Text 3
  7. 【全栈计划 —— 单片机】——Part_01 单片机数字电路基础+C51基础概念
  8. 使用现有在线翻译服务进行代码翻译的体验
  9. 数组分为两部分,使得其和相差最小
  10. org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
  11. c语言eallow,求大神指导C语言框图设计!!!
  12. 使用Pyton将MAC地址转换成指定格式
  13. 万维网www/web —— Tim Berners-Lee理念:建立全球范围信息网,彻底打破信息存取壁垒(网页相互链接,URL,HTTP,HTML,CGI等)
  14. 经纬度坐标转换到平面坐标
  15. 教你四个步骤在Word中设计毕业论文目录
  16. 已解决 vmware 虚拟机安装后没有虚拟网卡问题
  17. 用python实现基于turtle生成彩虹糖(可根据自己的喜好调整彩虹棒棒糖的颜色)
  18. 网站的图标 favicon.ico
  19. m基于matlab的连续相位调制(CPM)解调系统仿真,包括解调,同步等模块
  20. python乒乓球小游戏_100行-python乒乓球小游戏

热门文章

  1. 板线分离嵌入式RFID读卡模块NFC读写模块HX880系列的应用案例
  2. matlab测量直流母线上的电压,基于模糊控制的有源滤波器直流母线电压控制
  3. iOS开发之strip处理framework的调试符号
  4. Unity3D数字孪生开发笔记——网络篇
  5. 微型计算机内存容量大小一般是指什么的容量,通常说的计算机内存大小指的是什么?...
  6. 「BJOI 2019」排兵布阵
  7. 后端程序员生产力工具合集
  8. 最强内存稳定性测试软件,内存稳定性测试软件TM5
  9. 数学建模【规划模型--线性规划(整数规划、0-1规划)、非线性规划-附:案例分析、奶制品的生产和销售(详细求解过程)】
  10. 人工智能行业每日必读(01·17)