วิธีคำนวณแฟกทอเรียล (Factorial) ใน Python
คุณอาจจำคำว่า "แฟกทอเรียล" (factorial) จากชั้นเรียนคณิตศาสตร์มัธยม พวกมันคำนวณยากมากโดยไม่มีเครื่องคิดเลข ใครอยากคำนวณแฟกทอเรียลของ 10 โดยคูณ 1x2x3x4 ทีละตัวด้วยมือ?
มีหลายวิธีที่คุณสามารถคำนวณแฟกทอเรียลใน Python ในคู่มือนี้ เราจะพูดถึงวิธีคำนวณแฟกทอเรียลโดยใช้สามวิธี: เมธอด math.factorial, ฟังก์ชันเรียกซ้ำ (recursive function), และวิธีแบบวนซ้ำ (iterative method)
โดยไม่ล่าช้ามาเริ่มกันเลย!
แฟกทอเรียลคืออะไร?
แฟกทอเรียลคือผลคูณของจำนวนเต็มทั้งหมดระหว่างหนึ่งและอีกจำนวนหนึ่ง
แสดงเป็นสูตรคณิตศาสตร์ แฟกทอเรียลคือ:
n! = 1x2x3...n
เครื่องหมายคะแแนน (!) บ่งชี้ว่าเรากำลังคำนวณแฟกทอเรียล "n" คือตัวเลขที่เรากำลังคำนวณแฟกทอเรียล การคำนวณของเราหยุดเมื่อจำนวนเต็มทั้งหมดที่น้อยกว่าหรือเท่ากับ "n" ถูกคูณรวมกัน
ไม่สามารถคำนวณแฟกทอเรียลบนจำนวนลบได้
Python Factorial: math.factorial()
คุณสามารถคำนวณแฟกทอเรียลโดยใช้โมดูล math ของ Python ไลบรารีนี้มีเมธอดหลายอย่างที่คุณสามารถใช้ทำฟังก์ชันคณิตศาสตร์ ตัวอย่างเช่น คุณสามารถใช้ไลบรารี math เพื่อสร้างตัวเลขสุ่ม
เมธอด math.factorial() รับตัวเลขและคำนวณแฟกทอเรียลของมัน ก่อนที่เราจะใช้เมธอดนี้ เราต้อง import ไลบรารี math เข้าไปในโค้ดของเรา:
import math
ตอนนี้ มาเขียนโปรแกรม Python เพื่อหาแฟกทอเรียลของ 17:
number = 17 fact = math.factorial(number) print("The factorial of {} is {}.".format(number, str(fact))) โค้ดของเราคืนค่า: The factorial of 17 is 355687428096000.
เมธอด factorial() คืนค่าแฟกทอเรียลของตัวเลข
เราพิมพ์ตัวเลขนั้นไปยังคอนโซลพร้อมข้อความ: "The factorial of 17 is " เราใช้คำสั่ง format() เพื่อที่เราจะสามารถเพิ่มตัวเลขของเราเข้าไปในสตริงได้
Python Factorial: วิธีแบบวนซ้ำ (Iterative Approach)
แฟกทอเรียลสามารถคำนวณได้โดยไม่ใช้ไลบรารีภายนอกของ Python คุณสามารถคำนวณแฟกทอเรียลโดยใช้คำสั่ง for แบบง่ายๆ ที่คำนวณผลคูณของตัวเลขทั้งหมดในช่วงที่คูณรวมกัน
มาเริ่มต้นด้วยการประกาศตัวแปรสองตัว:
number = 17 fact = 1
ตัวแปรแรกสอดคล้องกับตัวเลขที่เราต้องการคำนวณแฟกทอเรียล ตัวแปรที่สองจะติดตามผลรวมของแฟกทอเรียล
ต่อไป เราต้องสร้างลูป for ที่วนซ้ำผ่านทุกตัวเลขในช่วงของหนึ่งและตัวเลขของเรา:
for num in range(1, number+1): fact = fact * num print("The factorial of {} is {}.".format(number, str(fact))) ลูป for คำนวณแฟกทอเรียลของตัวเลข คำสั่ง print แสดงผลรวมแฟกทอเรียลที่คำนวณได้ในลูป for ของเรา
โค้ดของเราคืนค่า: The factorial of 17 is 355687428096000.
วิธีนี้มีประสิทธิภาพน้อยกว่าเมธอด math.factorial() เล็กน้อย เนื่องจากเมธอด math.factorial() ถูกนำไปใช้โดยวิธีการ implement แบบ C-type ซึ่งให้ประโยชน์ด้านประสิทธิภาพ
หากคุณต้องการคำนวณแฟกทอเรียลของตัวเลขโดยไม่ใช้ไลบรารีภายนอก วิธีแบบวนซ้ำเป็นวิธีที่มีประโยชน์
Python Factorial: วิธีแบบเรียกซ้ำ (Recursive Approach)
แฟกทอเรียลสามารถคำนวณได้โดยใช้ฟังก์ชันเรียกซ้ำ ฟังก์ชันเรียกซ้ำคือฟังก์ชันที่เรียกตัวเองเพื่อแก้ปัญหาเฉพาะ
ฟังก์ชันเรียกซ้ำมักใช้คำนวณลำดับคณิตศาสตร์หรือแก้ปัญหาคณิตศาสตร์ เนื่องจากมักมีสูตรที่กำหนดไว้ใช้คำนวณคำตอบของปัญหา
เปิดไฟล์ Python และวางฟังก์ชันต่อไปนี้:
def calculate_factorial(number): if number == 1: return number else: return number * calculate_factorial(number - 1)
ฟังก์ชันนี้คำนวณแฟกทอเรียลของตัวเลขแบบเรียกซ้ำ ต่อไป เราต้องเขียนโปรแกรมหลักที่ใช้ฟังก์ชันนี้:
number = 17 fact = calculate_factorial(number) print("The factorial of {} is {}.".format(number, str(fact))) เราประกาศตัวแปรสองตัว: number และ fact Number คือตัวเลขที่เราต้องการคำนวณแฟกทอเรียล "fact" ถูกกำหนดผลลัพธ์ของฟังก์ชัน calculate_factorial() ซึ่งคำนวณแฟกทอเรียลของเรา ต่อไป เราพิมพ์คำตอบไปยังคอนโซล
โค้ดของเราคืนค่า: The factorial of 17 is 355687428096000.
สรุป
แฟกทอเรียลมักใช้ในคณิตศาสตร์ พวกมันคือผลคูณของจำนวนเต็มทั้งหมดจากหนึ่งถึงอีกตัวเลขหนึ่งเมื่อคูณรวมกัน
คุณสามารถคำนวณแฟกทอเรียลใน Python ได้โดยใช้ math.factorial(), วิธีแบบวนซ้ำ, หรือฟังก์ชันเรียกซ้ำ วิธีแบบวนซ้ำและแบบเรียกซ้ำสามารถเขียนได้ในที่เรียกว่า "vanilla Python" หมายความว่าคุณไม่ต้อง import ไลบรารีใดๆ เพื่อคำนวณแฟกทอเรียลด้วยวิธีเหล่านี้
ตอนนี้คุณพร้อมที่จะคำนวณแฟกทอเรียลใน Python อย่างมืออาชีพแล้ว!