递归函数--杨辉三角
时间: 2024-06-07 07:04:11 浏览: 141
递归函数是一种在函数定义中调用自身的编程技术,通常用于解决可以通过自我分解为相同或相似子问题来解决的问题。杨辉三角,又称帕斯卡三角或杨表,是一个数学上的数阵,每一行代表一个组合数列,列数和行数从0开始,每个数字是其上方两个数字之和。例如,第一行是1,第二行是1、1,第三行是1、2、1,以此类推。
递归函数在展示杨辉三角中非常直观,因为它可以通过简单的规则生成每一行的数字。对于递归函数来说,我们可以这样定义:
```python
def pascal_triangle(n, row=):
if n == 0:
return []
else:
result = [row]
if n > 1:
result += [row[-1] + row[-2]] + pascal_triangle(n-1, row[1:])
return result
# 输出前几行的杨辉三角
for i in range(5):
print(pascal_triangle(i))
```
相关问题
使用递归函数输出十行杨辉三角
杨辉三角是一个经典的数学问题,它是一个由数字构成的三角形,每一行的开头和结尾都是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))
使用递归函数输入十行杨辉三角
递归是一种解决问题的方法,通过将问题分解成规模更小的相同问题来解决。要使用递归函数画出十行的杨辉三角,你可以参考以下Python示例:
```python
def pascal_triangle(n):
if n == 0 or n == 1:
return [[1]]
else:
prev_row = pascal_triangle(n - 1)
curr_row = [1] * (n + 1)
for i in range(1, n):
curr_row[i] = prev_row[i - 1][0] + prev_row[i - 1][i]
curr_row.insert(0, 1) # 添加开头的1
return [curr_row] + prev_row
# 打印前10行的杨辉三角
for row_num, row in enumerate(pascal_triangle(10), start=1):
print("第{}行:".format(row_num))
print(' '.join(str(num) for num in row))
print() # 每行之间换行
阅读全文