อัลกอริทึม Python

แฟกทอเรียลแบบ 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 และทดสอบกรณีขอบก่อนใช้ชุดข้อมูลที่ใหญ่ขึ้น

  1. ทดสอบ input ว่าง หนึ่งสมาชิก และค่าซ้ำ
  2. แสดงสถานะหลังแต่ละขั้นตอน
  3. เปรียบเทียบประสิทธิภาพกับวิธีอื่น
รันใน Python IDE →