A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

问题:n阶台阶,可以一步走1阶,也可以一步走2阶。问共多少种走法。
要求:用递归


思路: 设n阶台阶走法为f(n),则有
n=1: f(n)=1   只有一种走法(1)
n=2: f(n)=2   两种(1+1或者2)
n>2: 第一步有两种走法:1步或2步。所以n阶台阶为走1阶后剩下的种数,与走2阶后剩下的种数之和。也就是f(n)=f(n-1)+f(n-2)
以此写出递归函数

又:此递归效率太低。归其原因,是重复计算了f(3)、f(4)……f(8)。所以我们可以先定义一个数组,将已经算出的值存起来。需要时可以直接用。方法是:
a[0]不用。因为已知f(1)和f(2),所以直接赋值为1,2。后边自动初始化为0。其相应的值第一次调用时求出,再调用时直接从数组中取。
a[0]永远用不到。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马