Day 25:递归求斐波那契数列前 N 项
先总结 Day 24 作业题,再布置 Day 25 作业题。
Day 24 作业题
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
![aeb2290f86df3ec55c30fc14e9e19ba0.png](https://img-blog.csdnimg.cn/img_convert/aeb2290f86df3ec55c30fc14e9e19ba0.png)
已知杨辉三角第 i-1
行,生成第 i
行为:
[1] +
[yanghui[-1][i-1] + yanghui[-1][i] for i in range(1, numRows-1)] +
[1]
完整代码:
class Solution():
def generate(self, numRows):
if numRows == 0:
return []
elif numRows == 1:
return [[1]]
else: # 调用自身生成前 numRows - 1 行的杨辉三角
yanghui = self.generate(numRows - 1)
# 根据倒数第二行再生成最后一行:
last_row = [1] + [yanghui[-1][i-1] + yanghui[-1][i] for i in range(1, numRows-1)] + [1]
yanghui.append(last_row)
return yanghui
递归总结
在实现递归函数之前,有件重要的事情需要解决:找出递推关系。
Day 25
下面再进一步,学习递归的其他知识。
通常情况下,递归是一种直观而有效的实现算法的方法。但是,如果使用不合理,会造成大量的重复计算。那么,你有什么办法能消除某些重复计算呢?通过求斐波那契数问题,体会如何消除递归计算中的重复计算问题。
def fib(self, N):
pass
补全以上代码,返回斐波那契数列前 N 项。
长按二维码关注
欢迎加入星球,从零学程序员必备算法,每天在星球内记录学习过程、学习星友超赞的回答,还会不定期送精华资料!打卡 300 天,退还除平台收取的其他所有费用。