Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

แฟกทอเรียล () ใน Python


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