在 C 中打印 Pascal 三角形

Printing Pascal Triangle in C

我已经看过这里提出的一些关于帕斯卡三角的问题,但我似乎仍然无法想象该算法是如何工作的。

[1]
[1 1]
[1 2 1]
[1 3 3 1] (3 comes from 1 + 2 on the previous row)
[1 4 6 4 1] (4 comes from 1 + 3, while 6 comes 3 + 3 on the previous row)
etc.

我很难想象如何通过循环在三角形中直观地添加数字(就像他们在学校告诉你的那样)。如果能提供详细的答案以帮助解决这个问题,我将不胜感激。

做一个二维数组。

1 放入第一个单元格,让该行充满 garbabe

[1|g|g|g|...         // 1st row (arr[0][0] = 1;)

对于第二行(和第三行...),从左侧的 1 开始,然后添加上一行的值

[1|g|g|g|...        // 1st row
[1|g|g|g|...        // 2nd row (arr[1][0] = 1;)
                    //         (arr[1][1] = arr[1][0] + arr[0][0])

等...

每个单元格都有值

cell[r][c] = cell[r-1][c-1] + cell[r-1]c]

对于 c>0 。和

cell[r][0] = 1

只需将每行的 c 范围增加一个,从第一行 0 开始,第二行 1 ...