LeetCode刷题笔记(八)递归

八. 递归

递归代码模板:

def recursion(level, param1, param2, ...):
    # recursion terminator
    if level > MAX_LEVEL:
        print_result
        return
    # process logic in current level
    process_data(level, data...)
    # drill down
    self.recursion(level+1, p1, ...)
    # reverse the current level status if needed
    reverse_state(level)
118. 杨辉三角

题目:获取杨辉三角的前几行
输入:numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

    def generate(self, numRows: int) -> List[List[int]]:
        if numRows == 0:
            return []
        if numRows == 1:
            return [[1]]

        if numRows > 1:
            res = self.generate(numRows-1) # 递归
            newlist = [1]
            for i in range(0, numRows-2):
                newlist.append(res[numRows-2][i]+res[numRows-2][i+1])
            newlist.append(1)
            res.append(newlist)
        return res
119. 杨辉三角 II

题目:获取杨辉三角的某一行
输入:rowIndex = 3
输出:[1,3,3,1]

    def getRow(self, rowIndex: int) -> List[int]:
        if rowIndex == 0:
            return [1]
        if rowIndex == 1:
            return [1, 1]

        if rowIndex > 1:
            res = self.getRow(rowIndex-1)
            newlist = [1]
            for i in range(0, rowIndex-1):
                newlist.append(res[i]+res[i+1])
            newlist.append(1)
        return newlist
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LeetCode刷题总结1 1.数字题 1.1 第一类 1.1.1 整数反转 给出一个 32 位的有符号整数,你需...
    墨痕hz阅读 475评论 0 0
  • 算法,是我们程序员纵向发展所必须攀登的一座大山,下面我们做一些算法题,难度逐渐递增。当然我们碰见解不开的题时千万不...
    fuaiyi阅读 441评论 0 0
  • 1.链表 1.实现一个单向链表 2.找出链表相交节点,假设均没有环 3.判断链表是否有环思路:使用快慢两个指针,当...
    X1028阅读 700评论 0 0
  • 一、分治,回溯,递归,动态规划 1.1、递归的代码模板 1.2、分治(Divide & Conquer)的代码模板...
    王小鹏的随笔阅读 531评论 0 0
  • 题目描述: 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方...
    CodeHui阅读 223评论 0 1