فكرة استخدامه كانت معقدة لي في بداية تعلمها في الجامعة، لذلك انصحك في البحث عنها اكثر بعد قراءة هذا الثريد
هيا بنا نبدأ👇
هيا بنا نبدأ👇
🟢كيف يتم حل مشكلة معينة باستخدام Recursion؟
الفكرة هي تمثيل مشكلة ما وتقسيمها الى مشكلة واحدة أو أكثر، وإضافة شرط أساسي واحد أو أكثر لإيقافها
على سبيل المثال:
نحسب مضروب n إذا عرفنا مضروب (n-1)، الحالة الأساسية للمضروب هي n = 0، نعيد 1 عندما n = 0
الفكرة هي تمثيل مشكلة ما وتقسيمها الى مشكلة واحدة أو أكثر، وإضافة شرط أساسي واحد أو أكثر لإيقافها
على سبيل المثال:
نحسب مضروب n إذا عرفنا مضروب (n-1)، الحالة الأساسية للمضروب هي n = 0، نعيد 1 عندما n = 0
باستخدامها، يمكن حل بعض المشاكل بسهولة تامة
🟢 أمثلة على هذه المشكلات هي:
🔻 Towers of Hanoi (TOH)
🔻 Inorder / Preorder / Postorder Tree Traversals
🔻 DFS للرسم البياني
وما إلى ذلك
🟢 أمثلة على هذه المشكلات هي:
🔻 Towers of Hanoi (TOH)
🔻 Inorder / Preorder / Postorder Tree Traversals
🔻 DFS للرسم البياني
وما إلى ذلك
عندما يتم استدعاء دالّة sum ()، فإنها تضيف k إلى مجموع جميع الأرقام الأصغر من k وتعيد النتيجة
عندما تصبح k = 0 ، ترجع الدالة 0 فقط، ونظرًا لأن الدالّة لا تستدعي نفسها عندما تكون k تساوي 0، يتوقف البرنامج عند هذا الحد ويعيد النتيجة
عندما تصبح k = 0 ، ترجع الدالة 0 فقط، ونظرًا لأن الدالّة لا تستدعي نفسها عندما تكون k تساوي 0، يتوقف البرنامج عند هذا الحد ويعيد النتيجة
🟢حالة التوقف Halting Condition:
مثلما يمكن أن تصطدم الحلقات بمشكلة التكرار اللانهائي، يمكن أن تواجه الدالّلات مشكلة resursion اللانهائي
وهي عندما لا تتوقف الدالّة أبدا عن استدعاء نفسها، يجب أن يكون لكل دالة تكرارية حالة توقف، وهي الحالة التي تتوقف فيها الوظيفة عن استدعاء نفسها
مثلما يمكن أن تصطدم الحلقات بمشكلة التكرار اللانهائي، يمكن أن تواجه الدالّلات مشكلة resursion اللانهائي
وهي عندما لا تتوقف الدالّة أبدا عن استدعاء نفسها، يجب أن يكون لكل دالة تكرارية حالة توقف، وهي الحالة التي تتوقف فيها الوظيفة عن استدعاء نفسها
🔴عيوبه:
🔻 يستهلك مساحة المكدس، ينتج عن كل استدعاء للطريقة مثيل جديد للطريقة، مثيل به مجموعة جديدة من المتغيرات المحلية
تعتمد مساحة المكدس الإجمالية المستخدمة على مستوى تداخل عملية العودية وعدد المتغيرات والمعلمات المحلية.
🔻 يستهلك مساحة المكدس، ينتج عن كل استدعاء للطريقة مثيل جديد للطريقة، مثيل به مجموعة جديدة من المتغيرات المحلية
تعتمد مساحة المكدس الإجمالية المستخدمة على مستوى تداخل عملية العودية وعدد المتغيرات والمعلمات المحلية.
🔻 قد تؤدي recursion الى حسابات زائدة عن الحاجة، ضع في اعتبارك الحساب التكراري لتسلسل فيبوناتشي
باختصار، يتعين على المرء أن يوازن بين بساطة الكود الذي يتم تسليمه عن طريق recursion مقابل عيوبه
عندما يكون من الممكن إيجاد حل تكراري بسيط نسبيًا، فمن المؤكد أنه بديل أفضل
باختصار، يتعين على المرء أن يوازن بين بساطة الكود الذي يتم تسليمه عن طريق recursion مقابل عيوبه
عندما يكون من الممكن إيجاد حل تكراري بسيط نسبيًا، فمن المؤكد أنه بديل أفضل
هل تعلمت شيء جديد؟ لا تنس اعادة التغريد حتى يستفيد الجميع🙏
جاري تحميل الاقتراحات...