Học Python - Bài 87 Viết hàm tính n!
DANH SÁCH TÓM TẮT:
Giới Thiệu
Giai thừa của một số nguyên dương n (ký hiệu là n!) là tích của tất cả các số nguyên dương từ 1 đến n. Bài viết này hướng dẫn hai cách viết một hàm Python để tính giai thừa: cách sử dụng vòng lặp và cách tối ưu hóa bằng đệ quy hoặc thư viện có sẵn.
Cách Thực Hiện
def tinh_giai_thua_vong_lap(n): if n == 0 or n == 1: return 1 factorial = 1 for i in range(2, n + 1): factorial *= i return factorial
def tinh_giai_thua_de_quy(n): if n == 0 or n == 1: return 1 return n * tinh_giai_thua_de_quy(n - 1)
Python cung cấp hàm math.factorial() giúp tính giai thừa nhanh chóng và tối ưu hơn.
import math def tinh_giai_thua_math(n): return math.factorial(n)
import math
def tinh_giai_thua_vong_lap(n):
if n == 0 or n == 1:
return 1
factorial = 1
for i in range(2, n + 1):
factorial *= i
return factorial
def tinh_giai_thua_de_quy(n):
if n == 0 or n == 1:
return 1
return n * tinh_giai_thua_de_quy(n - 1)
def tinh_giai_thua_math(n):
return math.factorial(n)
# Nhập số nguyên dương n
n = int(input("Nhập số nguyên dương n: "))
if n >= 0:
print(f"Giai thừa theo vòng lặp của {n}! là: {tinh_giai_thua_vong_lap(n)}")
print(f"Giai thừa theo đệ quy của {n}! là: {tinh_giai_thua_de_quy(n)}")
print(f"Giai thừa theo thư viện math của {n}! là: {tinh_giai_thua_math(n)}")
else:
print("Vui lòng nhập số nguyên không âm.") Ví Dụ Chạy Chương Trình
Nhập số nguyên dương n: 5
Giai thừa theo vòng lặp của 5! là: 120
Giai thừa theo đệ quy của 5! là: 120
Giai thừa theo thư viện math của 5! là: 120
| Phương pháp | Ưu điểm | Nhược điểm |
| Vòng lặp | Không cần gọi lại nhiều lần, dễ hiểu | Có thể chậm với n rất lớn |
| Đệ quy | Code ngắn gọn, dễ đọc | Có thể gây lỗi tràn bộ nhớ nếu n quá lớn |
| math.factorial() | Tối ưu nhất, nhanh chóng | Phụ thuộc vào thư viện math |
Cả ba cách đều cho kết quả chính xác. Nếu bạn muốn hiểu rõ thuật toán, hãy dùng vòng lặp. Nếu thích cách tiếp cận đệ quy, hãy thử cách 2. Nếu cần hiệu suất tốt nhất, hãy sử dụng math.factorial(). Hy vọng bài viết hữu ích cho bạn!
Bạn đang tìm kiếm nguồn tài liệu ôn thi học sinh giỏi Tin học lớp…
Phần 2: Tải ngay 200 Bài lập trình Python có lời giải cơ bản đến…
Tổng Hợp Các Hàm Python "Cốt Lõi" Khi Thi HSG Tỉnh Và Vào 10 Chuyên…
Nếu bạn đang ôn thi học sinh giỏi Tin học THCS cấp tỉnh Tiền Giang,…
Tổng Hợp 74 Đề Thi Học Sinh Giỏi Tin Học THCS Cấp Tỉnh Có Đáp…
Tổng hợp 75 Đề thi HSG Tin học THCS Python Cấp Tỉnh (Có Code Giải…
This website uses cookies.