Cách tính giai thừa trong Python
Bạn có thể nhớ từ "giai thừa" từ lớp toán trung học. Chúng không dễ tính nếu không có máy tính. Ai muốn tính giai thừa 10 bằng cách nhân thủ công 1x2x3x4...?
Có vài cách tính giai thừa trong Python. Trong hướng dẫn này, chúng ta sẽ nói về tính giai thừa bằng ba cách: phương thức math.factorial, hàm đệ quy, và phương pháp lặp.
Không dài dòng nữa, hãy bắt đầu!
Giai thừa là gì?
Giai thừa là tích của tất cả số nguyên từ 1 đến một số khác.
Diễn đạt bằng công thức toán học, giai thừa là:
n! = 1x2x3...n
Dấu chấm than cho biết chúng ta đang tính giai thừa. "n" là số chúng ta tính giai thừa. Tính toán dừng khi tất cả số nguyên nhỏ hơn hoặc bằng "n" được nhân cùng nhau.
Không thể tính giai thừa cho số âm.
Giai thừa Python: math.factorial()
Bạn có thể tính giai thừa dùng module math Python. Thư viện này cung cấp các phương thức thực hiện hàm toán học. Ví dụ, bạn có thể dùng thư viện math tạo số ngẫu nhiên.
81% người tham gia cho biết họ cảm thấy tự tin hơn về cơ hội việc làm công nghệ sau khi tham gia bootcamp. Được ghép nối với bootcamp ngay hôm nay.
Sinh viên trung bình tốt nghiệp bootcamp mất chưa đến sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được việc đầu tiên.
Phương thức math.factorial() chấp nhận một số và tính giai thừa. Trước khi dùng phương thức này, cần import thư viện math vào mã:
import math
Bây giờ, viết chương trình Python tìm giai thừa của 17:
number = 17 fact = math.factorial(number) print("The factorial of {} is {}.".format(number, str(fact))) Mã trả về: The factorial of 17 is 355687428096000.
Phương thức factorial() trả về giai thừa của một số.
Chúng ta in số đó ra console với thông báo: "The factorial of 17 is ". Dùng câu lệnh format() để thêm số vào chuỗi.
Giai thừa Python: Cách lặp (Iterative)
Giai thừa có thể tính không dùng thư viện Python bên ngoài. Bạn có thể tính giai thừa dùng câu lệnh for đơn giản tính tích của tất cả số trong một phạm vi nhân cùng nhau.
Hãy bắt đầu khai báo hai biến:
number = 17 fact = 1
Biến đầu tiên tương ứng với số muốn tính giai thừa. Biến thứ hai theo dõi tổng giai thừa.
Tiếp theo, tạo vòng lặp for lặp qua mọi số trong phạm vi từ 1 đến số của chúng ta:
for num in range(1, number+1): fact = fact * num print("The factorial of {} is {}.".format(number, str(fact))) Vòng lặp for tính giai thừa của một số. Câu lệnh in hiển thị tổng giai thừa đã tính trong vòng lặp for.
Mã trả về: The factorial of 17 is 355687428096000.
Phương pháp này kém hiệu quả hơn math.factorial() một chút. Vì math.factorial() triển khai dùng phương pháp kiểu C. Điều này mang lại lợi ích hiệu năng.
Nếu muốn tính giai thừa không dùng thư viện bên ngoài, cách lặp là phương pháp hữu ích.
Giai thừa Python: Cách đệ quy (Recursive)
Giai thừa có thể tính dùng hàm đệ quy. Hàm đệ quy là hàm gọi chính nó để giải quyết vấn đề cụ thể.
Hàm đệ quy thường dùng tính chuỗi toán học hoặc giải quyết bài toán toán học. Vì thường có công thức xác định dùng để tính đáp án.
Mở file Python và dán hàm sau:
def calculate_factorial(number): if number == 1: return number else: return number * calculate_factorial(number - 1)
Hàm này đệ quy tính giai thừa của một số. Tiếp theo, viết chương trình chính dùng hàm này:
number = 17 fact = calculate_factorial(number) print("The factorial of {} is {}.".format(number, str(fact))) Chúng ta khai báo hai biến: number và fact. Number là số muốn tính giai thừa. "fact" gán kết quả hàm calculate_factorial() tính giai thừa. Tiếp theo, in đáp án ra console.
Mã trả về: The factorial of 17 is 355687428096000.
Kết luận
Giai thừa thường dùng trong toán học. Chúng là tích của tất cả số nguyên từ 1 đến một số khác khi nhân cùng nhau.
Bạn có thể tính giai thừa trong Python dùng math.factorial(), phương pháp lặp, hoặc hàm đệ quy. Cách lặp và đệ quy viết được trong "vanilla Python". Nghĩa là không cần import thư viện nào để tính giai thừa với các cách này.
Bây giờ bạn đã sẵn sàng tính giai thừa trong Python như chuyên gia!