美文网首页算法
Python实现杨辉三角

Python实现杨辉三角

作者: 李白开水 | 来源:发表于2020-02-26 23:29 被阅读0次

    要实现的杨辉三角:


    image.png

    方法一:

    思路:
    申请一个n行的二维数组
    打印出n行的依次递增一个元素,且元素都为一列表:

       arr = [[1] * i for i in range(1, n + 1)]
       print(arr)
    

    如下图所示:


    image.png

    将每一行中,元素下标不为0和不为数组长度的元素(下标为k)的值改为上一个列表下标为n-1和n的值的和:

        n = 10
        arr = [[1] * i for i in range(1, n + 1)]
        # print(arr)
        for i in range(len(arr)):
            for j in range(len(arr[i])):
                # print(arr[i][j])
                if j != 0 and j != len(arr[i]) - 1:
                    arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]
        print(arr)
    

    结果如图:


    image.png

    最后修改一下输出格式:

        n = 10
        arr = [[1] * i for i in range(1, n + 1)]
        # print(arr)
        for i in range(len(arr)):
            for j in range(len(arr[i])):
                # print(arr[i][j])
                if j != 0 and j != len(arr[i]) - 1:
                    arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]
            print(" ".join(map(lambda x: str(x), arr[i])))
    

    输出:


    image.png

    方法二:

    思路:
    同样先打印出n行的依次递增一个元素,且元素都为一列表:

    n = 10
    an = [1] * n
    for i in range(n):
        print(an[0:i+1])
    

    如图:


    image.png

    因为是要在原数组上做更改,所以逆序输出列表,并将列表相应的值更新:

    n = 10
    an = [1] * n
    for i in range(n):
        # print(an[0:i+1])
        for j in range(i-1,0,-1):
            an[j] = an[j] + an[j-1]
        print(an[0:i+1])
    

    结果:


    image.png

    维基百科也有实现:
    https://zh.wikipedia.org/wiki/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%E5%BD%A2

    相关文章

      网友评论

        本文标题:Python实现杨辉三角

        本文链接:https://www.haomeiwen.com/subject/nqvgchtx.html