Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tính giai thừa (factorial) trong Python: 3 cách

Giai thừa (factorial) của số nguyên dương n (ký hiệu n!) là tích các số từ 1 đến n. Python có 3 cách phổ biến:

Cách 1: Vòng lặp for

n = int(input("Nhập số: "))
factorial = 1

if n >= 1:
    for i in range(1, n + 1):
        factorial *= i

print(f"Giai thừa của {n} là: {factorial}")

Kết quả

Nhập số: 5
Giai thừa của 5 là: 120

Cách 2: Đệ quy (Recursion)

def factorial_recursive(n):
    if n <= 1:
        return 1
    return n * factorial_recursive(n - 1)

num = int(input("Nhập số: "))
print(factorial_recursive(num))

Kết quả

Nhập số: 5
120
Nhập số: -2
1  # Lưu ý: cần xử lý trường hợp âm

Cách 3: math.factorial() - Khuyến nghị

import math

num = int(input("Nhập số: "))
print(f"Giai thừa của {num} là: {math.factorial(num)}")

Kết quả

Nhập số: 5
Giai thừa của 5 là: 120

Nhập số: 3.6
ValueError: invalid literal for int() with base 10: '3.6'

So sánh

CáchƯu điểmNhược điểm
Vòng lặpDễ hiểu, không giới hạn stackCode dài hơn
Đệ quyNgắn gọn, tư duy toán họcGọi stack sâu → RecursionError cho n lớn
math.factorial()Tối ưu C, xử lý lỗi, nhanh nhấtCần import math

Khuyến nghị: Dùng math.factorial() cho production code.