编程输出杨辉三角的5种思路,从入门到进阶
编程输出杨辉三角的5种思路,从入门到进阶
思路一:基础入门——使用嵌套循环
思路描述:
使用两个嵌套的for循环,外层循环控制行数,内层循环控制每一行的数字。每一行的数字通过上一行的数字计算得出,即`C(n-1, i) = C(n-1, i-1) + C(n-1, i)`。
python
def print_pascal_triangle(num_rows):
for i in range(num_rows):
row = []
for j in range(i + 1):
if j == 0 or j == i:
row.append(1)
else:
row.append(row[j - 1] + row[j - 2])
print(row)
print_pascal_triangle(5)
思路二:进阶——使用列表推导式
思路描述:
使用列表推导式来生成每一行的数字,并打印出来。这种方法更为简洁。
python
def print_pascal_triangle(num_rows):
for i in range(num_rows):
row = [1] (i + 1)
for j in range(1, i):
row[j] = row[j - 1] + row[j + 1]
print(row)
print_pascal_triangle(5)
思路三:使用组合数公式
思路描述:
使用组合数公式`C(n, k) = n! / (k!(n-k)!)`来生成杨辉三角。这种方法在理论上更为精确,但计算量较大。
python
def factorial(n):
if n == 0:
return 1
else:
return n factorial(n - 1)
def print_pascal_triangle(num_rows):
for i in range(num_rows):
row = []
for j in range(i + 1):
row.append(factorial(i) // (factorial(j) factorial(i - j)))
print(row)
print_pascal_triangle(5)
思路四:使用动态规划
思路描述:
使用动态规划的思想,将每一行的计算基于上一行的结果。这种方法在计算上更为高效。
python
def print_pascal_triangle(num_rows):
triangle = [[0] (i + 1) for i in range(num_rows)]
for i in range(num_rows):
triangle[i][0] = 1
triangle[i][i] = 1
for j in range(1, i):
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j]
print(triangle[i])
print_pascal_triangle(5)
思路五:使用NumPy库
思路描述:
使用NumPy库来生成杨辉三角。这种方法在处理大数据时更为高效。
python
import numpy as np
def print_pascal_triangle(num_rows):
triangle = np.binomial(np.arange(num_rows), np.arange(num_rows))
for row in triangle:
print(row)
print_pascal_triangle(5)
以上五种方法分别代表了从入门到进阶的不同思路,从基础的嵌套循环到使用NumPy库,可以根据具体需求选择合适的方法。
