العودة إلى الدورة

الدرس الرابع عشر: مقدمة إلى العودية (Recursion) (المفهوم)

الخوارزميات: من الصفر إلى الاحتراف (دليل المبتدئين)

14. مقدمة إلى العودية (Recursion)

العودية هي تقنية تستدعي فيها الدالة نفسها، إما بشكل مباشر أو غير مباشر.

إنها ضرورية لخوارزميات معينة (مثل اجتياز الأشجار، Quick Sort، و Merge Sort).

قاعدتان أساسيتان للعودية

  1. حالة الأساس (Base Case): شرط يوقف العودية. بدون حالة أساس، ستستدعي الدالة نفسها إلى ما لا نهاية، مما يؤدي إلى خطأ Stack Overflow.
  2. الخطوة العودية (Recursive Step): الجزء الذي تستدعي فيه الدالة نفسها، عادةً على نسخة أصغر أو أبسط من المشكلة الأصلية.

مثال: حساب المضروب (Factorial)

مضروب 5 (5!) هو 5 * 4 * 3 * 2 * 1. لاحظ أن 5! = 5 * (4!). يشير هذا المرجع الذاتي إلى الخطوة العودية.

python def factorial(n): # 1. Base Case: Stops when n is 0 or 1 if n <= 1: return 1 # 2. Recursive Step: Calls itself with a smaller input return n * factorial(n - 1)