การหาแฟกทอเรียลของตัวเลขเป็นข้อกำหนดที่พบบ่อยในการวิเคราะห์ข้อมูลและการวิเคราะห์ทางคณิตศาสตร์อื่นๆ ที่เกี่ยวข้องกับหลาม แฟกทอเรียลจะพบเป็นจำนวนเต็มบวกเสมอโดยการคูณจำนวนเต็มทั้งหมดตั้งแต่ 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'