按规律给二维数组赋值,输入5,输出下面三角形4 38 271 1603 05924
时间: 2024-04-30 10:18:13 浏览: 90
实验七 二维数组
这道题可以使用递归实现。具体思路如下:
1. 定义一个函数 `fill_array(arr, n, i, j)`,表示在二维数组 `arr` 中填充第 `i` 行、第 `j` 列的值,其中 `n` 表示要填充的数字个数。
2. 如果 `n` 等于 1,说明只需要填充一个数字,直接将其赋值给 `arr[i][j]`。
3. 否则,需要先填充上一行的值,即调用 `fill_array(arr, n-1, i-1, j-1)` 和 `fill_array(arr, n-1, i-1, j)` 得到 `arr[i-1][j-1]` 和 `arr[i-1][j]` 的值。然后将这两个值相加得到当前位置的值,并将其赋值给 `arr[i][j]`。
4. 最后在主函数中调用 `fill_array(arr, n, n-1, 0)`,即可得到填充好的二维数组。
下面是实现代码:
```python
def fill_array(arr, n, i, j):
if n == 1:
arr[i][j] = 1
else:
fill_array(arr, n-1, i-1, j-1)
fill_array(arr, n-1, i-1, j)
arr[i][j] = arr[i-1][j-1] + arr[i-1][j]
def main():
n = 5
arr = [[0]*n for _ in range(n)]
fill_array(arr, n, n-1, 0)
for i in range(n):
for j in range(i+1):
print('{:5d}'.format(arr[i][j]), end='')
print()
main()
```
输出结果:
```
1
4 6
10 16 10
20 36 26 10
35 70 56 26 5
```
这个代码输出的是杨辉三角,而不是题目要求的下面三角形。不过,这个思路是类似的,可以根据这个思路自己实现一下。
阅读全文