การหาแฟกทอเรียลของตัวเลขเป็นข้อกำหนดที่พบบ่อยในการวิเคราะห์ข้อมูลและการวิเคราะห์ทางคณิตศาสตร์อื่นๆ ที่เกี่ยวข้องกับหลาม แฟกทอเรียลจะพบเป็นจำนวนเต็มบวกเสมอโดยการคูณจำนวนเต็มทั้งหมดตั้งแต่ 1 จนถึงจำนวนที่กำหนด มีสามวิธีในการค้นหาสิ่งนี้ดังแสดงด้านล่าง
การใช้ For Loop
เราสามารถใช้ for วนซ้ำเพื่อวนซ้ำผ่านหมายเลข 1 จนถึงจำนวนที่กำหนดและคูณต่อไปในแต่ละขั้นตอน ในโปรแกรมด้านล่าง เราขอให้ผู้ใช้ป้อนตัวเลขและแปลงอินพุตเป็นจำนวนเต็มก่อนที่จะใช้ในลูป วิธีนี้ช่วยให้มั่นใจได้ว่าเราได้จำนวนเต็มบวกในการคำนวณ
ตัวอย่าง
n = input("Enter a number: ")
factorial = 1
if int(n) >= 1:
for i in range (1,int(n)+1):
factorial = factorial * i
print("Factorail of ",n , " is : ",factorial) ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
Enter a number: 5 Factorail of 5 is : 120
การใช้การเรียกซ้ำ
ตัวอย่าง
num = input("Enter a number: ")
def recur_factorial(n):
if n == 1:
return n
elif n < 1:
return ("NA")
else:
return n*recur_factorial(n-1)
print (recur_factorial(int(num))) ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
#Run1: Enter a number: 5 120 #Run2: Enter a number: -2 NA
การใช้ math.factorial()
ในกรณีนี้ เราสามารถใช้ฟังก์ชันแฟกทอเรียลซึ่งมีอยู่ในโมดูลคณิตศาสตร์ได้โดยตรง เราไม่จำเป็นต้องเขียนโค้ดสำหรับฟังก์ชันแฟกทอเรียล แทนที่จะใช้ math.factorial() โดยตรง และยังดูแลสถานการณ์ตัวเลขติดลบและเศษส่วนอีกด้วย
ตัวอย่าง
import math
num = input("Enter a number: ")
print("The factorial of ", num, " is : ")
print(math.factorial(int(num))) ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
#Run1: Enter a number: 5 The factorial of 5 is : 120 #Run 2: Enter a number: 3.6 Traceback (most recent call last): The factorial of 3.6 is : File "C:/Users....py", line 5, in print(math.factorial(int(num))) ValueError: invalid literal for int() with base 10: '3.6'