العودية (Recursion) هي عندما تستدعي دالة نفسها لحل نسخة أصغر من نفس المشكلة. كل عودية تحتاج إلى حالة أساسية (base case) توقفها وحالة عودية (recursive case) تتحرك نحو الحالة الأساسية.
الفكرة
قسّم المشكلة إلى مشاكل جزئية متطابقة أصغر. كل استدعاء يدفع إطاراً (frame) على مكدس الاستدعاءات (call stack)؛ الإرجاعات تزيله منه.
مثال
python
():
n <= :
n * factorial(n - )
factorial()
