الفرق بين العودية والتكرار

مؤلف: Laura McKinney
تاريخ الخلق: 1 أبريل 2021
تاريخ التحديث: 4 قد 2024
Anonim
#01 [Data Structures] - Complexity
فيديو: #01 [Data Structures] - Complexity

المحتوى


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

  1. رسم بياني للمقارنة
  2. تعريف
  3. الاختلافات الرئيسية
  4. خاتمة

رسم بياني للمقارنة

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


تعريف العودية

يسمح C ++ للدالة بالاتصال بنفسها ضمن الكود الخاص بها. هذا يعني أن تعريف الوظيفة يمتلك استدعاء دالة لنفسه. في بعض الأحيان يطلق عليه أيضا "تعريف دائري". يتم إنشاء مجموعة من المتغيرات المحلية والمعلمات التي تستخدمها الوظيفة حديثًا في كل مرة تقوم فيها الوظيفة بالاتصال بنفسها ويتم تخزينها في الجزء العلوي من الحزمة. ولكن ، في كل مرة تقوم فيها إحدى الوظائف بالاتصال بنفسها ، فإنها لا تنشئ نسخة جديدة من هذه الوظيفة. وظيفة العودية لا تقلل إلى حد كبير من حجم الرمز ولا حتى تحسين استخدام الذاكرة ، لكنها تفعل بعض بالمقارنة مع التكرار.

لإنهاء العودية ، يجب عليك تضمين عبارة تحديد في تعريف الوظيفة لإجبار الوظيفة على العودة دون إعطاء مكالمة متكررة لنفسها. إن عدم وجود جملة select في تعريف دالة تكرارية سوف تسمح للوظيفة في تكرار لانهائي بمجرد استدعاء.

دعونا نفهم العودية مع وظيفة التي ستعيد مضروب الرقم.

int factorial (int num) {int answer؛ إذا (num == 1) {return 1؛ } {answer = factorial (num-1) * num؛ // العودية الدعوة} العودة (الجواب) ؛ }

في التعليمة البرمجية أعلاه ، تُظهر العبارة الموجودة في جزء آخر العودية ، حيث يستدعي البيان الدالة الفعلية () الموجودة فيها.


تعريف التكرار

التكرار هو عملية تنفيذ مجموعة التعليمات بشكل متكرر حتى يصبح شرط التكرار كاذبًا. يتضمن بيان التكرار التهيئة والمقارنة وتنفيذ العبارات داخل بيان التكرار وأخيرا تحديث متغير التحكم. بعد تحديث متغير التحكم ، تتم مقارنته مرة أخرى ، وتكرر العملية نفسها ، حتى يتحول الشرط في بيان التكرار إلى خطأ. عبارات التكرار هي حلقة "for" و "بينما" حلقة ، حلقة "do-while".

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

دعونا نفهم التكرار فيما يتعلق المثال أعلاه.

int factorial (int num) {int answer = 1؛ // يحتاج إلى التهيئة لأنه قد يحتوي على قيمة بيانات غير مقبولة قبل التهيئة لـ (int t = 1؛ t> num؛ t ++) // iteration {answer = answer * (t)؛ عودة (الجواب) ؛ }}

في التعليمة البرمجية أعلاه ، تقوم الدالة بإرجاع عامل الرقم باستخدام عبارة التكرار.

  1. العودية هي عندما تقوم إحدى الطرق في البرنامج بالاتصال مرارًا وتكرارًا ، في حين أن التكرار يحدث عندما يتم تنفيذ مجموعة من التعليمات في أحد البرامج بشكل متكرر.
  2. تحتوي الطريقة التكرارية على مجموعة من الإرشادات ، عبارة تستدعي نفسها ، وشرط إنهاء في حين أن عبارات التكرار تحتوي على التهيئة ، الزيادة ، الشرط ، مجموعة التعليمات داخل حلقة ومتغير تحكم.
  3. يحدد البيان الشرطي إنهاء العودية وقيمة متغير التحكم تقرر إنهاء بيان التكرار.
  4. إذا لم تؤدي الطريقة إلى شرط الإنهاء ، فإنها تدخل في تكرار غير محدود. من ناحية أخرى ، إذا لم يؤدي متغير التحكم أبدًا إلى قيمة الإنهاء ، فسوف يتكرر بيان التكرار إلى ما لا نهاية.
  5. العودية اللانهائية يمكن أن تؤدي إلى تعطل النظام ، في حين أن التكرار اللانهائي يستهلك دورات CPU.
  6. يتم تطبيق العودية دائمًا على الطريقة ، بينما يتم تطبيق التكرار على مجموعة من التعليمات.
  7. يتم تخزين المتغيرات التي تم إنشاؤها أثناء العودية على المكدس ، في حين أن التكرار لا يتطلب مكدس.
  8. يتسبب العودية في حمل استدعاء دالة متكررة ، بينما لا يحتوي التكرار على وظيفة استدعاء الحمل.
  9. نظرًا لأن وظيفة استدعاء التنفيذ العودية تكون أبطأ ، في حين يكون تنفيذ التكرار أسرع.
  10. التكرار يقلل من حجم الكود ، في حين أن التكرار يجعل الكود أطول.

خاتمة:

من السهل الكتابة على وظيفة العودية ، لكنها لا تعمل بشكل جيد مقارنة بالتكرار ، في حين أن التكرار صعب الكتابة ولكن أدائها جيد مقارنة بالعودة.