编程输出杨辉三角的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库,可以根据具体需求选择合适的方法。