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

Python Factorial: คู่มือการคำนวณแฟกทอเรียล

วิธีคำนวณแฟกทอเรียล (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 อย่างมืออาชีพแล้ว!