سؤال

عند كتابة كود VC++ بجودة الإنتاج، هل يعتبر استخدام التكرار مقبولًا؟لما و لما لا؟

هل كانت مفيدة؟

المحلول

هل هناك طريقة لتحديد النقطة التي سأواجه فيها تجاوز سعة المكدس؟

ليس حقيقيًا.يحدث تجاوز سعة المكدس عند استنفاد مساحة المكدس - ولكن...

  • يمكن تغيير حجم المكدس الأولي برمجيًا وقد يكون افتراضيًا بكميات مختلفة اعتمادًا على نظام التشغيل/المترجم/وما إلى ذلك
  • يعتمد مقدار ما تم استخدامه بالفعل على ما فعله تطبيقك (والمكتبات التي يستخدمها تطبيقك) سابقًا - وهذا غالبًا ما يكون من المستحيل التنبؤ به
  • يعتمد مقدار المكدس الذي تتطلبه كل مكالمة على ما تفعله في وظيفتك.إذا قمت بتخصيص عدد صحيح واحد فقط على المكدس، فقد تتمكن من تكرار عدد كبير من المرات، ولكن إذا كنت تقوم بتخصيص مخزن مؤقت بحجم 200 كيلو على المكدس، فلن يكون ذلك كثيرًا.

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

أجد أنه من الأفضل بكثير أن يتعطل التطبيق الخاص بي، بدلاً من أن يتكرر إلى الأبد باستخدام وحدة المعالجة المركزية بنسبة 100٪ ويجب أن يتم إيقافه بالقوة (هذا هو PITA الصحيح على خادم بعيد عبر اتصال سيء لأن Windows يفتقر إلى SSH)

مبدأ توجيهي تقريبي:هل تعتقد أنه من المرجح أن تطلق وظيفتك العودية على نفسها أكثر من 10000 مرة على التوالي؟أم أنك تفعل شيئًا غبيًا مثل تخصيص 200 ألف مخزن مؤقت على المكدس؟

إذا كانت الإجابة بنعم، تقلق بشأن ذلك.
إذا كان الجواب لا، استمر في الأمور الأكثر أهمية.

نصائح أخرى

نعم.ولكن أبدا في التعليمات البرمجية الميتة.سيكون ذلك سخيفًا.

بالتأكيد - على سبيل المثال.إذا كنت تريد اجتياز بنية شجرة، فما الذي ستستخدمه أيضًا؟

ربما ترغب في الحصول على شيء مثل الحد الأقصى للعمق للتأكد من أنك لا تكتب حلقة لا نهائية.(إذا كان هذا منطقيًا في مثالك)

هل هناك طريقة لتحديد في أي نقطة سأواجه سعة مكدس؟

يعتمد على مدى العمق الذي تذهب إليه، ومدى حجم التكرار الفعلي.أعتبر أنك تفهم ما يفعله العودية؟

يعد العودية ضروريًا تقريبًا لاجتياز هياكل الملفات مثل المجلد/الدلائل.

يعد اجتياز بنية تشبه الشجرة أمرًا سهلاً للغاية إذا تم استخدام التكرار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top