• 杨辉三角


    关于杨辉三角,不多说,直接看图理解

    题目:输入一个数字n(正整数),输出杨辉三角的前n行。即输入1,返回上图第一行:1;输入2,返回上图前三行1,1 1;输入3,返回上图前三行1,1 1,1 2 1;以此类推。

    题目解析:根据图片我们可知,想要得到结果,我们需要得到每一行结果,然后将每一行结果拼接。而杨辉三角每一行 都由上一行推导而出,每个元素都由前一行与它相邻的两个元素相加,结尾拼接1得到。很显然我们可以使用递归函数完成。

    # 根据前一列数据得到后一列数据
    def func2(arry):
        arr = [1]
        for i in range(len(arry) - 1):
            arr.append(arry[i]+arry[i+1])
        arr.append(1)
        return arr
    # 递归函数,根据传入值,输出对应数组序列
    def func1(n):
        res_arr = [[1], ]
        if n <= 1:
            return res_arr
        else:
            return func1(n-1) + [func2(func1(n-1)[-1])]

    解析函数:

      func1 为一个递归函数,当n=1是直接返回二维列表[[1], ]

        当n>1时,我们用前n-1行数据“func1(n-1)”,拼接第n行数据“func2(func1(n-1)[-1])”

        func2函数返回的是一维列表,在函数外添加“[ ]”,以保持数据类型不变 

        func1(n-1):前n-1行数据,

        func1(n-1)[-1]:第n-1行数据

      func2函数参数为列表,目的是根据前一行数据得到下一行数据。

        arry:前一行数据

        arr:为目标数据(下一行),

        for循环遍历arry,使arry每个数据和下一个数据和相加,将结果拼接到arr中

      

      

  • 相关阅读:
    程序片段--2的乘方
    Set、Map集合、栈、队列
    Map迭代(六种)
    Struts2标签--控制标签
    线性表
    数据结构笔记(1)
    spingMVC问题小结
    《浪潮之巅》十四章笔记
    《浪潮之巅》十三章笔记
    《浪潮之巅》十二章笔记
  • 原文地址:https://www.cnblogs.com/fansirs/p/13474568.html
Copyright © 2020-2023  润新知