也来说说电影《少年班》中周知庸问王大法的问题
在电影《少年班》中周知庸老师刚遇到王大法的时候,周问了王这么一个问题:
设一共有20级楼梯,每次能下1级或2级,问共有多少种下法?
王大法很快算出了有10946种。
其实这个数字也不难得出,设下n级楼梯时有F(n)种下法,那么n=1时有1种下法,n=2时有2种下法(连下两个一级或直接下两级),n>=3时有F(n-1)+F(n-2)种下法。所以F(1)=1,F(2)=2,F(3)=F(2)+F(1),F(4)=F(3)+F(2),F(5)=F(4)+F(3),…… 最后F(20)=F(19)+F(18)
这个递归形式的计算方法和斐波那契数列(OEIS:A000045)是一样的,只不过初始值不一样。
斐波那契数列的递归规律:
(图1)
这是我们要计算内容的递归规律:
(图2)
用代码实现这个递归也很方便,如下面的VB.net函数:
Public Function Func(x As Integer) As IntegerIf x < 0 ThenReturn 0ElseIf x = 1 ThenReturn 1ElseIf x = 2 ThenReturn 2ElseReturn Func(x - 1) + Func(x - 2)End If
End Function
使用此函数对前20级楼梯的计算结果为:
F(20)=10946,电影中王大法给出的结果与之一致。
下面我们更深入地研究一下这个问题:找出这个数列的通项公式。 Richard A. Brualdi 所著的《组合数学》第5版(冯速等译)一书第7章《递推关系和生成函数》给出了寻找斐波那契数列生成函数的方法,我们完全可以照猫画虎,写出本题中数列的通项公式,计算步骤如下:
∵n>=3时,有 F(n)=F(n-1)-F(n-2)
∴n>=3时,F(n)-F(n-1)-F(n-2)=0
令F(n)=q^n,则有
(图3)
(图4)
因为q不为0,所以只需要解出方程q^2-q-1=0即可:
(图5)
q1和q2都是我们所求数列的解,我们所求数列的通项公式可以写成下面的形式:
(图6)
当n=1和n=2时,我们可以联立两个二元一次方程:
(图7)
(图8)
将c1和c2带入到F(n)中
(图9)
因此可得出通项公式为:
(图10)
为验证此方法的正确性,我写了一段代码进行验证:
Public Function Func2(x As Integer) As DecimalIf x < 0 ThenReturn 0ElseIf x = 1 ThenReturn 1ElseIf x = 2 ThenReturn 2ElseDim result As Decimal = 0Dim sqrt5 As Decimal = Math.Sqrt(5)result = ((5 + sqrt5) / 10) * ((1 + sqrt5) / 2) ^ x + _((5 - sqrt5) / 10) * ((1 - sqrt5) / 2) ^ xReturn Math.Round(result)End If
End Function
运行结果如下,计算得出的结果与上一种递归解法是一样的。
附:本文中所有的数学公式,都是在Wikipedia的编辑器上写的,该编辑器使用TeX语法编辑数学公式,代码如下:
图1: <math>F(n)=\begin{cases}1,n=0\\1,n=1\\F(n-1)+F(n-2),n\ge2\end{cases}</math>
图2: <math>F(n)=\begin{cases}0,n=0\\1,n=1\\2,n=2\\F(n-1)+F(n-2),n\ge3\end{cases}</math>
图3: <math>q^{n}-q^{n-1}-q^{n-2}=0</math>
图4: <math>q^{n-2}\left(q^2-q-1\right)=0</math>
图5: <math>q_1=\frac{1+\sqrt{5}}{2},q_2=\frac{1-\sqrt{5}}{2}</math>
图6: <math>F(n)=c_1\left(\frac{1+\sqrt{5}}{2}\right)^n+c_2\left(\frac{1-\sqrt{5}}{2}\right)^n</math>
图7: <math>\begin{cases}F(1)=\frac{1+\sqrt{5}}{2}c_1+\frac{1-\sqrt{5}}{2}c_2=1\\F(2)=\left(\frac{1+\sqrt{5}}{2}\right)^2c_1+\left(\frac{1-\sqrt{5}}{2}\right)^2c_2=2\end{cases}</math>
图8: <math>c_1=\frac{5+\sqrt{5}}{10},c_2=\frac{5-\sqrt{5}}{10}</math>
图9: <math>F(n)=\frac{5+\sqrt{5}}{10}\left(\frac{1+\sqrt{5}}{2}\right)^n+\frac{5-\sqrt{5}}{10}\left(\frac{1-\sqrt{5}}{2}\right)^n</math>
图10: <math>F(n)=\begin{cases}0,n=0\\1,n=1\\2,n=2\\\frac{5+\sqrt{5}}{10}\left(\frac{1+\sqrt{5}}{2}\right)^n+\frac{5-\sqrt{5}}{10}\left(\frac{1-\sqrt{5}}{2}\right)^n,n\ge3\end{cases}</math>
END
转载于:https://my.oschina.net/Tsybius2014/blog/688865
也来说说电影《少年班》中周知庸问王大法的问题相关推荐
- 鸿蒙系统 新闻,鸿蒙系统升级名单曝光,为什么你还没有收到推送?3个原因望周知...
操作系统是电子设备的灵魂,也是我国科技企业的"软肋".不管是PC时代的Windows系统还是智能手机时代的安卓系统,都是美国企业把持的. <科技日报>评选制约我国工业发 ...
- 【计算机网络】周知端口号列表
端口号 端口号是计算机网路中的一个重要概念,它是一个16bits的数,大小在0~65535之间. 0~1023范围内的端口号称为周知端口号,是受限制的,这是指他们保留给诸如HTTP(80).FTP(2 ...
- 启动的时候闪退_APP突然闪退怎么办?学会这五个妙招比换手机实用,看完望周知...
APP突然闪退怎么办?学会这五个妙招比换手机实用,看完望周知 随着互联网的快速发展,智能手机正在改写我们的生活方式,不论是出门不带钱包带手机,还是智能家居一体化,实际上都离不开手机上安装的APP软件. ...
- 总所周知, p站是一个聚集了众多各国优秀艺术家相互交流的网站,Python采集p站数据
前言 总所周知, p站是日本知名的虚拟社区, 聚集了众多来自日本, 中国, 韩国, 美国等国家的优秀艺术家.他们在p站上相互交流, 分享高清优秀插画, 是一个正经的网站 环境介绍 python 3.8 ...
- 信号带e无法连接服务器,手机信号栏突然出现“E”是啥意思?原来是这个问题,望周知...
原标题:手机信号栏突然出现"E"是啥意思?原来是这个问题,望周知 从我们的手机开始使用4G网络之后,基本上在手机的信号标志栏上都是显示的4G的标志,偶尔的时候会显示H的标志,显示H ...
- 4g手机关闭4g信号显示无服务器,手机4G信号栏为什么突然出现“HD”?原来开通了这个业务,望周知...
手机4G信号栏为什么突然出现"HD"?原来开通了这个业务,望周知 我们平时在使用手机的过程中,对于手机信号栏的那个地方还是比较关注的,特别是在手机网络出现问题的时候,我们就更会关注 ...
- 微信又确定全新封号标准!触犯这几条底线将被永久封号,望周知
微信是我们日常生活中,不可避免都要使用到的工具.生活助手.高频率.长时间的使用,有可能一不小心就被封号了,该怎么办? 下面就来介绍下,微信确定的全新的封号标准,触犯这几条底线将被用久封号,望周知. 一 ...
- Mysql 中 “必知” 的单行处理函数
Mysql 中必知的单行函数 每博一文案 钱钟书就曾感慨道,在我一知半解的几国语言中,没有比中国古语 所谓的素交,更能表现出友谊骨髓,素是一切颜色的基础,同时也是 一切颜色的调和,像白日包含了基色,真 ...
- 骑砍服务器文件夹,《骑马与砍杀2:霸主》东亚决斗服已开启,决斗礼仪请周知...
小编注: 2020年5月9日晚,Taleworlds为东亚地区玩家开放了决斗模式的服务器.联机的老玩家应该对于这个模式很熟悉而且充满期待了,从骑砍2开始的新骑友可能还不太熟悉决斗服的规则,因此Tale ...
最新文章
- 详尽 | PyTorch动态图解析
- spring整合mybatis(入门级简单教程3)--获取sqlSession对象
- volatile 和 sig_atomic_tlinux
- linux下Mplayer安装与设置指南(以及如何加载显示中文字幕)
- C++的iostream标准库介绍+使用详解(转)
- 快准牌电脑发软件_电脑如何下载软件
- SAP ui5 xml view parse and control creation point
- [逆向][Writeup]ISG2015 flagfinder - .NET程序逆向
- Android自定义控件学习(四)------创建一个视图类
- python中属于无序序列的有_Python字典和集合属于无序序列。(2.0分)_学小易找答案...
- java.lang.ClassNotFoundException: org.apache.commons.codec.DecoderException
- ACL 2021 | 丁香园知识增强预训练模型
- BZOJ1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏
- ionic3 创建和启动
- 歇后语:有牌不胡偏要杠
- unity-shader之混合模式、面剔除、Alpha测试、深度测试、通道遮罩
- (修订)来自山区双非本科少年的秋招冒险记
- 微信小程序、微信低版本兼容
- 京东校园招聘2019.04.13 第一题 01序列拉齐
- java递归计算N!