python 使用递归函数输出十行杨辉三角
时间: 2024-10-18 08:22:34 浏览: 105
在Python中,我们可以使用递归函数来生成杨辉三角的前n行。杨辉三角是一个数学术语,每个数字都是其上方两个数字之和。下面是一个简单的递归函数示例,用于打印前10行:
```python
def print_pascal_triangle(n):
# 杨辉三角的第一行和第二行是固定的
if n == 1 or n == 2:
for i in range(1, n+1):
print(' ' * (n - i), end='')
print('*' * i)
return
# 递归地打印前n-1行,并在当前行添加新元素
print_pascal_triangle(n - 1)
for i in range(n):
print(' ' * (n - i - 1), end='')
print('*' * (i + 1), end=' ')
if i != n - 1: # 避免打印最后一个元素后的空格
print(' ' * (i + 1), '*')
# 打印前10行
print_pascal_triangle(10)
```
当你运行这个函数,它会按行打印出杨辉三角的前10行。
相关问题
用Python使用递归函数输出十行杨辉三角
在Python中,我们可以使用递归函数来生成并输出杨辉三角的前10行。杨辉三角是一个数阵,每行的数字是由上一行的两个相邻数字相加得到的。以下是递归函数的实现:
```python
def pascal_triangle(n):
# 基线情况:如果n小于等于1,直接返回空列表表示单元素序列
if n == 0 or n == 1:
return [[1]]
# 创建前n-1行的杨辉三角
prev_row = pascal_triangle(n - 1)
# 新建当前行,首尾添加1,然后通过两两相加填充中间位置
curr_row = [1] + [prev_row[i-1][i-1] + prev_row[i-1][i] for i in range(1, len(prev_row))] + [1]
# 返回包含当前行的新列表,合并所有行
return curr_row + prev_row
# 输出前10行
for row_num, row in enumerate(pascal_triangle(10), start=1):
print("第{}行:".format(row_num), " ".join(str(num) for num in row))
```
当你运行这段代码,它会打印出杨辉三角的前10行。每一行的数字之间用空格隔开。
使用递归函数输出十行杨辉三角
杨辉三角是一个经典的数学问题,它是一个由数字构成的三角形,每一行的开头和结尾都是1,中间的每个数是其上一行相邻两个数的和。我们可以使用递归函数来生成这个三角形。下面是一个简单的Python示例:
```python
def pascal_triangle(n):
# 边界条件:当n等于0或1时,返回空列表或只有一个元素[1]
if n == 0:
return [[]]
elif n == 1:
return [[1]]
# 递归情况:构建当前行,并将其添加到前一行的基础上
row = [1] # 当前行的第一个元素始终为1
prev_row = pascal_triangle(n - 1) # 上一行
for i in range(len(prev_row) - 1): # 遍历上一行的元素
row.append(prev_row[i] + prev_row[i + 1]) # 当前行的下一个元素是上两行相应位置相加
row.append(1) # 当前行的最后一个元素始终为1
# 返回当前行并合并所有行
return [row] + prev_row
# 输出前10行杨辉三角
for i in range(10):
print(pascal_triangle(i))
阅读全文