اذهب إلى المحتوى

السؤال

Recommended Posts

  • 2
نشر

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

في الواجب الخاص بك، انت تحتاج الى لحساب مضروب العدد 100، و انا متأكد انك تعرف تماما انه يعني 100 * 99 * 98 ..... 3 * 2 * 1

و يمكنك حلها ب Loop عادي و لكن بما انه مطلوب منك حلها باستعمال recursion و هي الطريقة الصحيح لحل هذه المشكلة فعليك اولا:

1. حساب مضروب 100 و هي عبارة عن 100  مضروبة بمضروب 99 ، اليس كذلك ؟

2. حساب مضروب 99  و هي عبارة عن 99 مضروبة بمضروب 98 

و تكرر العملية الى ان تصل الى:

99. حساب مضروب 2 و هو عبارة عن 2 مضروبة في مضروب واحد و هو يساوي واحد.

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

------

الان من الناحية البرمجية

انا لن احل لك المسألة خاصتك و لكن سأكتب السودوكود للدالة:

function factorial(n)
{
   if (n<=1)
      return 1;
   else
      return n * factorial(n-1);
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...