تخطَّ إلى المحتوى

🧮 شرح هياكل البيانات والخوارزميات

التعاوديّة (Recursion)

الدرس 11 من 25· ⏱ 1 دقائق قراءة

ما هي التعاوديّة؟

دالة تستدعي نفسها لحلّ مسألة أصغر من نفس النوع.

ركنان أساسيان

  1. حالة التوقّف (Base case): متى تتوقّف.
  2. الحالة التعاوديّة: استدعاء النفس بمدخل أصغر.
def factorial(n):
    if n <= 1:          # حالة التوقّف
        return 1
    return n * factorial(n - 1)   # تعاوديّة

فيبوناتشي

def fib(n):
    if n < 2:
        return n
    return fib(n - 1) + fib(n - 2)

⚠️ هذا الحلّ O(2ⁿ) بطيء — يُحسَّن بالبرمجة الديناميكية (درس لاحق).

التعاوديّة والمكدّس

كل استدعاء يُوضع على call stack. نسيان حالة التوقّف → stack overflow.

متى نستخدمها؟

  • الأشجار والرسوم البيانية.
  • المسائل التي تنقسم لمسائل فرعية متشابهة (divide & conquer).

🎯 التالي: الأشجار (Trees).

هل كان هذا الدرس مفيدًا؟