انتقل إلى المحتوى الرئيسي

نداء ذاتي

النداء الذاتي هو مبدأ مهم جدا في عالم البرمجة. يقوم على فكرة دالة تنادي نفسها في الجسم. وكما على الأغلب حزرتم، فالنداء الذاتي مدعوم من أبجد.

الدالة المُنادية على نفسها عادة ما تتألف من ركنين أساسيين:

  • الخطوة البدائية: هي المرحلة التي تكون فيها الدالة قادرة على القيام بإجراء أو إعطاء جواب مباشر، دون الحاجة إلى مناداة نفسها مرة أخرى.
  • الخطوة الندائية: هي المرحلة التي تكون فيها المُعضلة معقدة كفاية ما يجعل حلها في خطوة واحدة صعب، لذلك نقوم بتجزئتها إلى مشكلة أصغر أو أكثر مُنادين الدالة مرة أخرى لكل واحدة منها لكن بمُعطى أصغر.
ملاحظة

بدون الخطوة البدائية تبقى الدالة بالقيام بنداء نفسها إلى ما لا نهاية، مُسببين البرنامج بالتعطّل.

مثال

المثال التالي يقوم بحساب الأس لرقم معين عبر استخدام مبدأ النداء الذاتي للدالة:

دالة احسب_الأس(رقم عدد، رقم أس) : رقم {
اذا (أس == 0) {
ارجع 1؛
}

ارجع عدد * احسب_الأس(عدد، أس - 1)؛
}

اكتب(احسب_الأس(2، 5))؛
# الجواب سيكون 32

الشرح

  • الخطوة البدائية هنا تتمثل في الأسطر من 2 إلى 4. بحيث أن أس إن كان 0، فالجواب مباشرة سيكون 1، ولا داعي للدالة أن تنادي نفسها.
  • القسم الرئيسي هو في السطر رقم 6، حيث أن الحاصل هو قيمة المتغير عدد مضروبة بالحاصل من النداء على الدالة نفسها، مع أس أصغر بواحد.