写一个python程序第3题:输入一正整数n,打印n行的杨辉三角形,要求c(i,j)=c(i-1,j)+c(i-1,j-1)使用递归求解。
时间: 2023-12-14 20:05:09 浏览: 104
以下是实现代码:
```python
def pascal_triangle(n):
"""
递归实现杨辉三角
"""
if n == 1:
return [[1]]
triangle = pascal_triangle(n - 1)
last_row = triangle[-1]
row = [1]
for i in range(1, n - 1):
row.append(last_row[i - 1] + last_row[i])
row.append(1)
triangle.append(row)
return triangle
def print_triangle(triangle):
"""
打印杨辉三角
"""
for row in triangle:
print(' '.join(str(num) for num in row).center(len(str(triangle[-1][-1])) * len(row)))
n = int(input('请输入正整数n: '))
triangle = pascal_triangle(n)
print_triangle(triangle)
```
运行结果:
```
请输入正整数n: 6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
```
解释:首先通过递归函数 `pascal_triangle` 计算出杨辉三角的每一行,然后通过 `print_triangle` 函数将其打印出来。在打印时,使用 `str.center` 方法使每个数字都居中对齐,并且数字之间用空格隔开,同时根据最大数字的位数算出这些数字的宽度,以保证打印出来的三角形看起来比较整齐。
阅读全文