Viết chương trình in ra Tam giác Pascal bằng Python

Tam giác Pascal Python được viết như thế nào? Dưới đây là cách lập trình Python in ra tam giác Pascal.

Tam giác Pascal là một dạng tam giác các số, trong đó mỗi số bằng tổng của hai số đứng ngay phía trên nó ở hàng trước. Nó được đặt theo tên nhà toán học người Pháp Blaise Pascal, mặc dù nó đã được các nhà toán học ở nhiều nền văn hóa khác nhau nghiên cứu từ rất lâu trước ông.

Cấu trúc của Tam giác Pascal

  • Tam giác bắt đầu bằng số 1 ở trên cùng.
  • Mỗi hàng bắt đầu và kết thúc bằng số 1.
  • Bất kỳ số nào khác trong tam giác đều bằng tổng của hai số ngay phía trên nó ở hàng trước đó.

Một số mô hình khác nhau trong tam giác Pascal là:

  • Đường chéo trong tam giác Pascal
  • Hệ số nhị thức
  • Tổng ngang
  • Số nguyên tố trong tam giác
  • Mô hình Fibonacci, v.v.

Mỗi đường chéo phải của Tam giác Pascal, khi được coi là một chuỗi biểu diễn các số khác nhau, chẳng hạn như đường chéo phải đầu tiên biểu diễn chuỗi số 1, đường chéo phải thứ hai biểu diễn các số tam giác, đường chéo phải thứ ba biểu diễn các số tứ diện, đường chéo phải thứ tư biểu diễn các số Penelope, v.v.

Tam giác Pascal cũng là một câu hỏi thường xuyên được các công ty lớn sử dụng khi thi tuyển lập trình viên. Trong bài viết này, Quản Trị Mạng sẽ cùng các bạn tìm hiểu cách viết chương trình in ra Tam giác Pascal bằng Python.

Đề bài: Viết chương trình in ra Tam giác Pascal với số hàng cho trước.

Ví dụ: Số hàng bằng 5 thì Tam giác Pascal sẽ được in ra như sau:

Input: n = 5
Output:
      1
     1 1
    1 2 1
   1 3 3 1
  1 4 6 4 1

Cách 1: Sử dụng công thức nCr tức là n!/(n-r)!r!

Sau khi sử dụng công thức nCr, biểu diễn bằng hình ảnh trở thành:

          0C0
       1C0   1C1
    2C0   2C1   2C2
 3C0   3C1   3C2    3C3

Thuật toán:

  • Lấy một số hàng sẽ được in, giả sử nó là n.
  • Thực hiện phép lặp ngoài i từ 0 tới n lần để in các hàng.
  • Thực hiện phép lặp trong cho j từ 0 đến (N-1).
  • In một khoảng trống "".
  • Đóng vòng lặp bên trong (vòng lặp j) //cần thiết cho khoảng cách bên trái.
  • Thực hiện phép lặp bên trong cho j từ 0 đến i.
  • In nCr của i và j.
  • Đóng vòng lặp bên trong.
  • In ký tự xuống xòng (\n) sau mỗi lần lặp bên trong.

Dưới đây là code mẫu:

# Print Pascal's Triangle in Python
from math import factorial
 
# input n
n = 5
for i in range(n):
    for j in range(n-i+1):
 
        # for left spacing
        print(end=" ")
 
    for j in range(i+1):
 
        # nCr = n!/((n-r)!*r!)
        print(factorial(i)//(factorial(j)*factorial(i-j)), end=" ")
 
    # for new line
    print()

Cách 2:

Chúng ta có thể tối ưu hóa đoạn code trên bằng khái niệm Hệ số Nhị thức sau, mục thứ i trong một dòng là Hệ số Nhị thức C(line, i) và tất cả các dòng bắt đầu bằng giá trị 1. Ở đây, chúng ta phải thực hiện ý tưởng là tính toán C(line, i) bằng cách sử dụng C(line, i-1).

Code mẫu như sau:

# Print Pascal's Triangle in Python
 
# input n
n = 5
 
for i in range(1, n+1):
    for j in range(0, n-i+1):
        print(' ', end='')
 
    # first element is always 1
    C = 1
    for j in range(1, i+1):
 
        # first value in a line is always 1
        print(' ', C, sep='', end='')
 
        # using Binomial Coefficient
        C = C * (i - j) // j
    print()

Cách 3:

Đây là cách tối ưu nhất để in tam giác Pascal. Cách này dựa trên cơ sở lũy thừa của 11.

11**0 = 1
11**1 = 11
11**2 = 121
11**3 = 1331

Code mẫu như sau:

# Print Pascal's Triangle in Python
 
# input n
n = 5
 
# iterarte upto n
for i in range(n):
    # adjust space
    print(' '*(n-i), end='')
 
    # compute power of 11
    print(' '.join(map(str, str(11**i))))

Tuy nhiên, nhược điểm là phương pháp này chỉ áp dụng được ho đến n=5 mà thôi.

Quản Trị Mạng hy vọng rằng bài viết này sẽ có ích đối với bạn.

Thứ Bảy, 11/10/2025 11:03
2,33 👨 4.570
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
    ❖ Học Python