Making Sense of Recursion - Full Guide

يعتبر الـ Recursion من المواضيع التي تبدو غير منطقية عند تعلمها لأول مرة فكيف نقوم باستخدام الFunction التي ما زلنا نحاول تعريفها ؟ هذا ما يجعل الـ Recursion معقداََ بعض الشئ
Making Sense of Recursion - Full Guide

في هذه الصفحة

يعتبر الـ Recursion من المواضيع التي تبدو غير منطقية عند تعلمها لأول مرة فكيف نقوم باستخدام الFunction التي ما زلنا نحاول تعريفها ؟ هذا ما يجعل الـ Recursion معقداََ بعض الشئ بالنسبة لبعض المبتدئين. في هذا المقال سنحاول فهم الـ Recursion ولماذا يعمل كما سنقوم بشرح كيف يمكنك كتابة الـ Recursive Functions بنفسك. 

فكرة الـ Recursion 

الفكرة الأساسية للـ Recursion هي حل مشكلة كبيرة عن طريق تقسيمها إلى مشاكل أصغر منها -هذه المشاكل الأصغر تدعى Sub Problems- ، هذه الفكرة تظهر بشكل كبير في حياتنا اليومية فمثلاََ إذا أردت قراءة كتاب 500 صفحة فبدلاََ من قراءة كل الكتاب في يوم واحد تقوم كل يوم بقراءة 10 صفحات مثلاََ حتى تنتهي من الكتاب، في هذا المثال تقوم بنفس العملية – القراءة – ولكن على جزء صغير من الكتاب.

 مثال آخر وهو إذا سألني شخص ما أن أجمع رقمين مثلاََ 25 + 58 فأقوم بالتفكير كالتالي:

  • 50 + 20 = 70 
  • 8 + 5 = 13 
  • وبالتالي نتيجة الجمع تساوي 70 + 13 = 83.

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

لماذا يعمل الـ Recursion ؟ 

عند تعلم الـ Recursion لأول مرة على الأرجح تظن أن هذا الكود غير صحيح وأنه سيسبب Error عند تنفيذه، في المثال التالي سنحاول فهم لماذا يعمل الـ Recursion.

في هذا المثال مطلوب أن نقوم بكتابة Function تأخذ عدد صحيح n وتقوم بحساب مجموع الأعداد الصحيحة من 1 حتى n، أمثلة على النتائج المطلوبة لقيم مختلفة لـ n:

  • s(5) = 1 + 2 + 3 + 4 + 5 = 15
  • s(8) = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36

والآن لنفكر في كيفية حل هذا السؤال باستخدام الـ Recursion، لنبدأ بالنظر إلى بعض الأمثلة:

  • s(3) = 1 + 2 + 3 = 6
  • s(4) = 1 + 2 + 3 + 4 = 10
  • s(5) = 1 + 2 + 3 + 4 + 5 = 15
  • s(6) = 1 + 2 + 3 + 4 + 5 + 6 = 21 

 

هل تلاحظ نمط معين في هذه الأمثلة ؟ لننظر إلى المثال s(5) ،لحساب مجموع الأعداد الصحيحة من 1 حتى 5 نقوم بجمع الأعداد التالية: 1+2+3+4+5 إذاََ

s(5) = 1+2+3+4+5

 والآن لننظر إلى  (s(6 وفي هذه الحالة نقوم بجمع الأعداد 1+2+3+4+5+6 ولكننا نعلم أن 1 + 2 + 3 + 4 + 5 هو (5)s إذا يمكننا إزالة الأرقام 1 + 2 + 3 + 4 + 5 ووضع (5)s بدلاََ منهم وبالتالي يمكن أن نقول أن:

s(6) = 1+2+3+4+5 + 6

ولكن: s(5) = 1+2+3+4+5

اذاََ: s(6) = s(5) + 6

ويمكننا تعميم هذه العلاقة على جميع قيم n، بمعنى:

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

اشترك الآن بنشرة اقرأ-تِك الإخبارية

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