剑指offer-python刷题-跳台阶扩展问题
发布日期:2021-07-28 12:03:08
浏览次数:4
分类:技术文章
本文共 751 字,大约阅读时间需要 2 分钟。
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
经典的跳台阶问题是青蛙一次只能上1级台阶或者2级台阶,此时对于一个n级的台阶,如果青蛙先跳1级,则剩下的n-1级可以有f(n-1)中跳法;如果青蛙先跳2级,则剩下的n-2级可以有f(n-2)种跳法,因此可以总结f(n) = f(n-1)+f(n-2),即斐波拉契数列。
将该思想运用到拓展问题上,则可以有f(n) = f(n-1) + f(n-2) +... + f(1) + 1
此时可以用累加的方法
# -*- coding:utf-8 -*-class Solution: def jumpFloorII(self, number): # write code here f1 = 1 if number == 1: return 1 else: for i in range(number-1): f1 += f1 return f1
如果对应原公式写出几个具体的数就可以发现规律:
1,2,4,8,16...
即
或者可以理解为:青蛙前方一共有n级台阶,最后一级是要达到的,其他的n-1级都可以选择跳或不跳,因此也就是
这种可以称之为数学归纳法(就挺暴力的....)
# -*- coding:utf-8 -*-class Solution: def jumpFloorII(self, number): # write code here return 2**(number-1)
转载地址:https://blog.csdn.net/sinat_42437278/article/details/117380973 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月21日 15时35分09秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux驱动里获取时间差
2019-04-27
我的合伙人
2019-04-27
linux内核定时器使用
2019-04-27
dynmic_debug动态控制kernel下的日志输出
2019-04-27
截图命令
2019-04-27
使用class_attribute 生sys文件系统下生成调试文件,方便使用adb调试
2019-04-27
Android fb0 截屏实现
2019-04-27
ubuntu下 安装 adb
2019-04-27
shell 中的ifeq
2019-04-27
如何把应用程序app编译进android系统
2019-04-27
MTK8127 把系统的apk不编译进入system.img
2019-04-27
ubuntu 14.04中文显示乱码问题
2019-04-27
vim 插件cscope 使用
2019-04-27
vim 函数列表插件
2019-04-27
Android 广播接收
2019-04-27
MTK 升级USB问题
2019-04-27
MTK 8127平台使用busybox
2019-04-27
vim 设置支持鼠标
2019-04-27