แฟกทอเรียลแบบ Recursion ใน Python
ใช้สูตร n! = n × (n−1)! จนถึง base case 0 หรือ 1
แฟกทอเรียลแบบ Recursion ใน Python คืออะไร?
ใช้สูตร n! = n × (n−1)! จนถึง base case 0 หรือ 1
คำนวณ n! ด้วย recursive function
ควรใช้เมื่อใด?
- ทำความเข้าใจอัลกอริทึมและโครงสร้างข้อมูล
- สังเกตแต่ละขั้นตอนและกรณีขอบ
- เปรียบเทียบเวลาและหน่วยความจำ
โค้ดตัวอย่าง
main.py
def factorial(number):
if number < 0:
raise ValueError("Factorial is undefined for negative numbers")
if number <= 1:
return 1
return number * factorial(number - 1)
print(factorial(6))
ผลลัพธ์ที่คาดหวัง
720
หลักการทำงาน
แต่ละ call ลด n ทำให้เวลาและความลึก call stack เป็น O(n)
เปลี่ยนค่าและรันโปรแกรมด้วย คอมไพเลอร์ Python ออนไลน์ของ CodeUtility โดยไม่ต้องติดตั้ง Python
แบบฝึกหัด
ลองเปลี่ยน input และทดสอบกรณีขอบก่อนใช้ชุดข้อมูลที่ใหญ่ขึ้น
- ทดสอบ input ว่าง หนึ่งสมาชิก และค่าซ้ำ
- แสดงสถานะหลังแต่ละขั้นตอน
- เปรียบเทียบประสิทธิภาพกับวิธีอื่น