14. مقدمة إلى العودية (Recursion)
العودية هي تقنية تستدعي فيها الدالة نفسها، إما بشكل مباشر أو غير مباشر.
إنها ضرورية لخوارزميات معينة (مثل اجتياز الأشجار، Quick Sort، و Merge Sort).
قاعدتان أساسيتان للعودية
- حالة الأساس (Base Case): شرط يوقف العودية. بدون حالة أساس، ستستدعي الدالة نفسها إلى ما لا نهاية، مما يؤدي إلى خطأ Stack Overflow.
- الخطوة العودية (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)