Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مقدمة في الاستدعاء الذاتي

جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 47 من 65.

العودية (Recursion) هي تقنية برمجية تقوم فيها الدالة باستدعاء نفسها لحل مشكلة ما. فكر فيها كأنك تنظر في مرآتين متقابلتين - حيث يحتوي كل انعكاس على نسخة أصغر من نفس الصورة، مما يخلق حلقة لا نهائية حتى تصبح الانعكاسات أصغر من أن تُرى.

تحتاج كل دالة عودية إلى مكونين أساسيين لتعمل بشكل صحيح. الحالة الأساسية هي الشرط الذي يوقف العودية - فهي تشبه النقطة التي تصبح فيها انعكاسات المرآة أصغر من أن تكون ذات أهمية. بدون حالة أساسية، ستستدعي الدالة نفسها إلى الأبد، مما يؤدي في النهاية إلى تعطل برنامجك.

إن الخطوة العودية هي المكان الذي تستدعي فيه الدالة نفسها بنسخة معدلة من المشكلة الأصلية. في كل مرة تستدعي فيها الدالة نفسها، يجب أن تعمل على نسخة أصغر أو أبسط من المشكلة، وتتحرك تدريجياً نحو الحالة الأساسية.

تخيل أنك تبحث عن مفاتيحك في كومة من الأوراق. يمكنك التحقق من الورقة العلوية، وإذا لم تكن مفاتيحك هناك، فستفعل الشيء نفسه مع الكومة المتبقية (التي أصبحت الآن أصغر بورقة واحدة). ستستمر في تكرار هذه العملية حتى تجد مفاتيحك أو لا يتبقى المزيد من الأوراق للتحقق منها.

إن هذا النهج المتمثل في تقسيم مشكلة كبيرة إلى مشكلات أصغر ومتماثلة هو ما يجعل العودية (recursion) قوية للغاية لأنواع معينة من التحديات البرمجية.

ورقة مرجعية

العودية (Recursion) هي تقنية برمجية تستدعي فيها الدالة نفسها لحل مشكلة ما عن طريق تقسيمها إلى مشكلات أصغر ومتطابقة.

تحتاج كل دالة عودية إلى مكونين أساسيين:

الحالة الأساسية (Base case): الشرط الذي يوقف العودية لمنع الحلقات اللانهائية.

الخطوة العودية (Recursive step): حيث تستدعي الدالة نفسها بنسخة معدلة من المشكلة الأصلية، وتنتقل تدريجياً نحو الحالة الأساسية.

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow