Python Chương trình tìm giai thừa của một số

⚡ Tóm tắt thông minh

Giai thừa của một số trong Python là tích của mọi số nguyên dương nhỏ hơn hoặc bằng chính số đó. Python Nó tính toán bằng vòng lặp for, câu lệnh if-else, đệ quy hoặc hàm math.factorial() tích hợp sẵn.

  • 🔘 Đối với vòng lặp: Lặp lại từ 1 đến n, nhân tích liên tiếp để xây dựng giai thừa.
  • ☑️ Kiểm tra điều kiện if-else: Cần tránh nhập giá trị âm, vì việc này sẽ trả về lỗi do giai thừa cần số nguyên không âm.
  • Đệ quy: Một hàm tự gọi chính nó với n-1 cho đến khi đạt đến trường hợp cơ sở là 0.
  • 🧪 math.factorial(): Nhập thư viện toán học và gọi một hàm tích hợp sẵn để có kết quả nhanh chóng và đã được kiểm thử.
  • 🛠️ Các trường hợp ngoại lệ: Giai thừa của 0 bằng 1, và Python Xử lý các kết quả rất lớn một cách tự nhiên.
  • 🤖 Trí tuệ nhân tạo và khoa học dữ liệu: Xác suất, tổ hợp và các thư viện như SciPy đều sử dụng giai thừa trên mảng.

Python Chương trình tìm giai thừa của một số

Các phần bên dưới trình bày bốn cách tính giai thừa trong Python — một vòng lặp for, một phiên bản if-else, đệ quy và math.factorial() — cùng với thuật toán và các ứng dụng cơ bản.

Giai thừa của một số sử dụng vòng lặp for

Chúng ta hãy lấy ví dụ về Python Đoạn mã này nhận một số nguyên dương làm đầu vào để tính giai thừa của các số nguyên dương. Trong đoạn mã sau, vòng lặp bắt đầu với số 1, sau đó nhân với từng số đứng trước số cần tính giai thừa.

Sau đây Python mã minh họa hàm giai thừa bằng cách sử dụng một vòng lặp.

Python mã:

print ("Input a number")
factorialIP = int (input ())
ffactor23 = 1
for j in range (1, factorialIP+1):
   ffactor23 = ffactor23 * j
print ("The factorial of the number is “, ffactor23)

Đầu ra:

Input a number
4
The factorial of the number is 24

Trên đây Python Chương trình chỉ nhận đầu vào là các số dương và không kiểm tra số âm. Trong chương trình này, hệ số là 1 khi j bằng 1. Khi j bằng 2, hệ số được nhân với 2, và quá trình này sẽ tiếp tục cho đến khi j bằng 4 để đạt được 24.

Giai thừa của một số sử dụng câu lệnh IF…else

Sau đây Python Đoạn mã này minh họa hàm giai thừa bằng cách sử dụng một hàm. Không giống như phiên bản sử dụng vòng lặp, chương trình này cũng kiểm tra các số âm trước khi tính giai thừa.

Trong trước Python Trong đoạn mã này, việc kiểm tra số âm không được áp dụng, khiến hàm giai thừa không hoàn chỉnh và dễ gây ra lỗi nếu nhập số âm.

Trong đoạn mã được cung cấp, vòng lặp bắt đầu với số 1 và nhân với mỗi số liền trước nó, đồng thời hàm cũng kiểm tra tính hợp lệ của số âm trong dữ liệu đầu vào.

Python mã:

print("Enter a number for the purpose of determining factorial")
factorialIP = int(input())
def factorial(factorialIP):
   if factorialIP < 0:
     print ('Factorial does not exist')
     factor=0
     return factor
   elif factorialIP == 0:
     factor=1
     return factor
     print(factor)
   else:
     factor = 1
     for j in range (1, factorialIP+1):
       factor = factor * j
     return factor
  print ("The factorial of the number is ", factorial(factorialIP))

Đầu ra:

1) Enter a number to determine factorial
   -4
   Factorial does not exist
   The factorial of the number is 0

2) Enter a number to determine factorial
   4
   Factorial does not exist
   The factorial of the number is 24

T Python Chương trình chấp nhận các số dương và thêm kiểm tra số âm bằng cách sử dụng câu lệnh if và else, trả về chính xác 24 khi nhập giá trị 4.

Giai thừa của một số sử dụng đệ quy

Sau đây Python Đoạn mã này minh họa hàm giai thừa bằng phương pháp đệ quy. Trong ví dụ này, một hàm đệ quy nhận một số nguyên dương làm đầu vào sẽ xác định số giai thừa.

Python mã:

print("Enter a number for the purpose of determining factorial")
def factorial(num2):
  if num2 < 0:
    return 'Factorial does not exist'
  elif num2 == 0:
     return 1
  else:
     return num2 * factorial(num2-1)
number1 = int(input())
print("The factorial of the number is",factorial(number1))

Đầu ra:

Enter a number for the purpose of determining factorial
4
The factorial of the number is 24

Đệ quy có thể được giải thích như một khái niệm trong đó hàm được gọi trong Python Mô-đun có thể tự gọi chính nó nhiều lần. Nó chạy cho đến khi... Python Điều kiện hiện có trong mô-đun được thỏa mãn, trong đó hàm được gọi sẽ được truyền một giá trị.

Ở trên Python Trong chương trình, hàm def factorial liên tục gọi chính nó một cách đệ quy cho đến khi số đó đạt đến 0. Khi số đó đạt đến 0, nó sẽ khởi tạo lại số đó bằng 1, kết thúc quá trình đệ quy.

Tính giai thừa của một số bằng cách sử dụng hàm math.factorial()

Sau đây Python mã minh họa hàm giai thừa bằng cách sử dụng math.factorial(), có thể được sử dụng bằng cách nhập mô-đun toán học.

Hàm này không chấp nhận số nguyên âm và sẽ báo lỗi giá trị khi cung cấp số thực.

Python mã:

print("Enter a number for computing factorial")
import math
number1 = int(input())
print("The factorial is as computed comes out to be ")
print(math.factorial(number1))

Đầu ra:

Enter a number for computing factorial
4
The factorial, as computed, comes out to be 24

Thuật toán cho chương trình giai thừa trong Python

Chúng ta hãy lấy một ví dụ minh họa khái niệm giai thừa.

Để xác định giai thừa 5, hãy làm theo các bước sau:

5! = 5 x (5-1) x (5-2) x (5-3) x (5-4)
5! =120

Đây, 5! được biểu thị bằng 120.

Sơ đồ sau đây giúp bạn hiểu thuật toán tính giai thừa và trong trường hợp này, chúng ta hãy lấy ví dụ về giai thừa 4!

Thuật toán cho chương trình giai thừa

Thuật toán kiêm ví dụ minh họa giai thừa 4!

Ứng dụng giai thừa trong Python

Giai thừa của một số có ứng dụng rất rộng rãi trong toán học. Dưới đây là những ứng dụng quan trọng của Python:

  • Python giúp tính toán, tiếp theo là giai thừa in nhanh hơn và hiệu quả hơn các ngôn ngữ lập trình có sẵn khác.
  • Python mã dễ hiểu và có thể được sao chép trên các nền tảng khác nhau và giai thừa Python chương trình có thể được kết hợp trong một số bài tập xây dựng mô hình toán học.

Câu Hỏi Thường Gặp

Giai thừa của một số nguyên không âm n, được viết là n!, là tích của tất cả các số nguyên dương từ 1 đến n. Ví dụ, 5! bằng 5 × 4 × 3 × 2 × 1 = 120.

Theo định nghĩa, giai thừa của 0 là 1. Mọi phương pháp — vòng lặp, đệ quy, hoặc math.factorial() — đều trả về 1 khi nhận đầu vào là 0, và trường hợp cơ sở này cũng ngăn chặn các lời gọi đệ quy.

Vâng. Python Số nguyên có độ chính xác không giới hạn, vì vậy math.factorial(100) trả về kết quả 158 chữ số mà không bị tràn. Chỉ có bộ nhớ và thời gian chạy tăng lên theo kích thước đầu vào.

A vòng lặp for Thường thì phương pháp này được ưu tiên hơn. Cả hai đều chạy trong thời gian O(n), nhưng vòng lặp sử dụng bộ nhớ hằng số, trong khi đệ quy thêm một ngăn xếp cuộc gọi có thể gây ra lỗi. PythonGiới hạn đệ quy của nó.

Mỗi phương pháp tiêu chuẩn cần n−1 phép nhân, do đó độ phức tạp thời gian là O(n). Vòng lặp lặp lại giữ không gian ở mức O(1), trong khi đệ quy sử dụng không gian O(n) cho ngăn xếp gọi của nó.

Đệ quy sâu có thể vượt quá PythonGiới hạn mặc định của hàm này gần 1000 lần gọi. Hãy sử dụng vòng lặp for hoặc math.factorial() cho các đầu vào lớn, hoặc nâng giới hạn lên bằng sys.setrecursionlimit().

Đúng vậy. Giai thừa xuất hiện trong tổ hợp và các phân phối xác suất như phân phối Poisson và nhị thức, những nền tảng của nhiều mô hình học máy. Các thư viện khoa học dữ liệu cũng cung cấp các công cụ hỗ trợ tính giai thừa dạng vector cho mảng.

Đúng vậy. GitHub Copilot và các trợ lý AI tương tự tạo ra các phiên bản vòng lặp, đệ quy và math.factorial() từ một lời nhắc ngắn. Luôn kiểm tra đề xuất về điều kiện số âm và trường hợp cơ sở 0!.

Tóm tắt bài viết này với: