wangyanren 发表于 2022-8-17 15:24:22

triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j] 求解,这个语句求分析

triangle = []
for i in range(10):
    triangle.append([])
    for j in range(10):
      triangle.append(0)


for i in range(10):
    triangle = 1
    triangle = 1


for i in range(2, 10):
    for j in range(1, i):
       triangle = triangle + triangle
       print(triangle)

柿子饼同学 发表于 2022-8-17 15:49:12

本帖最后由 柿子饼同学 于 2022-8-17 16:05 编辑

一个三角形 , 在数组里 (最前面一行和一列是下标)

    0   1   2   3   4   5
----------------------------
0|1
1|1   1
2|1   2   1
3|1   3   3   1
4|1   4   6   4   1
5|1   5   10105   1

如下图 , 每个格子的依赖关系就是 i, j = (i-1, j) + (i-1, j-1)

根据我画的草图 , (i-1, j-1) 就是那个 绿色的 , (i-1, j) 就是那个粉色的
每一个格子都依赖正上方的格子和左上角的格子 , 是他们的和 (这个好像是用来算组合数的, 杨辉三角)

wangyanren 发表于 2022-8-17 16:25:10

柿子饼同学 发表于 2022-8-17 15:49
一个三角形 , 在数组里 (最前面一行和一列是下标)

    0   1   2   3   4   5


好难理清楚逻辑啊   你怎么一画图我是清楚了一点,但是我感觉这个代码写法这两个坐标的值的和triangle + triangle,我想问下,for j in range(1, i), 这语句怎么分析?

柿子饼同学 发表于 2022-8-17 18:35:26

wangyanren 发表于 2022-8-17 16:25
好难理清楚逻辑啊   你怎么一画图我是清楚了一点,但是我感觉这个代码写法这两个坐标的值的和triangle[ ...

-   0   1   2   3   4   5 -> j
0   0   0   0   0   0   0
1   0   1   0   0   0   0
2   0   1   1   0   0   0
3   0   1   2   1   0   0
4   0   1   3   3   1   0
5   0   1   4   6   4   1
|
v
i
"""
拿 triangle 举例, i == 5, j == 3
然后知道 triangle = triangle + triangle
也就是 +    = 6
      3    +    3   = 6
我也不知道怎么说, 这个应该很显然
range(1, i) 表示遍历 [1, i) 的区域 , 看上面的图 , 三角形在第 i 层有 i 个数
所以是这样
"""

柿子饼同学 发表于 2022-8-17 19:20:15

如果想了解更多 , 可以搜 杨辉三角
页: [1]
查看完整版本: triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j] 求解,这个语句求分析