التقنيات الجديدة في البرمجة تبهرنا في كل مرة،خصوصا عندما يتعلق اﻷمر بلغة البرمجة بايثون،فهي تجعل اﻷمور تبدو أكثر سهولة من ذي قبل.ﻻ يخفى عنا بأن الدوال سهلت كثيرا من عملية البرمجة و لوﻻها لما رأينا العديد من البرامج المعقدة و لما استطعنا تخيل وجودها من اﻷساس.
توفر لغات البرمجة تقنية تسمى اﻹستدعاء الذاتي Recursion و التي تعني إستدعاء الدالة داخل الدالة نفسها و بالتالي سننشئ حلقة تكرارية داخلية،لنأخذ مثال مضروب العدد في الدرس السابق…

=1:
n = n*num
num -=1
print n
]]>

في هذا المثال قمنا بحساب مضروب العدد عن طريق الحلقة التكرارية و بالتالي سنطلب من مفسر بايثون أن يقوم بالدوران في كل مرة باﻹعتماد على نتيجة الدورة السابقة و هذا ما سيسبب إستهلاكا أكبر لموارد الجهاز خصوصا إن كان العدد كبيرا جدا.

عند إنشاء الدوال في بايثون فإنه سيتم إنشاء شبه بيئة( أو باﻷحرى قالب) و بالتالي إستهلاك أقل لموارد الجهاز من الحساب المتكرر…دعونا نرى المثال الموالي:

هنا قمنا بإنشاء دالة إسمها factorial لديها مادة أولية واحدة هي n،تقوم الدالة بالتحقق من n إن كان أقل تماما من 2 فإنها ستقوم بإرجاع القيمة 1 ﻷن مضروب 1 و 0 هو 1 بشكل إفتراضي،أما في حالة أن n كان أكبر من 2 فإنها ستقوم بأخذ n و تضعه في متغير إفتراضي و تقوم بإستدعاء نفسها و لكن بقيمة جديدة هي n-1 و تقوم بضرب قيمة المتغير اﻹفتراضي في ناتج عملية إستدعاء نفسها.لنأخذ مثاﻻ عمليا و هو الموجود في الصورة أعلاه:مضروب 6:
نقوم باستدعاء الدالة factorial مع العدد 6،ستقوم الدالة بوضع 6 في متغير إفتراضي و تقوم باستدعاء نفسها مع إنقاص 1 من 6 و بالتالي إستدعاء (5)factorial و هكذا في كل مرة تقوم الدالة بنفس العملية إلى أن تصل إلى 1 و هي القيمة اﻷقل تماما من 2 و تقوم بإرجاع القيمة 1 ثم تعود و تقوم بحساب ناتج آخر عملية مضروبا في المتغير الوهمي المنشئ من العملية السابقة و تصل إلى آخر عملية و هي (6)factorial و تقوم بإرجاع الناتج النهائي و هو في هذه الحالة 720.

خاصية الإستدعاء الذاتي مفيدة جدا خصوصا عندما يتعلق الأمر ببرمجة أنظمة معقدة و عندما تكون قضية تقليل إستهلاك الموارد أمرا مهما جدا

2 تعليقان. Leave new

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Fill out this field
Fill out this field
الرجاء إدخال عنوان بريد إلكتروني صالح.
You need to agree with the terms to proceed

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

القائمة