قد يحتوي الإجراء أو الوظيفة على استدعاء لإجراء آخر ضمنه. بما في ذلك ، يمكن للروتين الفرعي استدعاء نفسه. في هذه الحالة ، لا يهتم الكمبيوتر. كما أنه ، كما هو الحال دائمًا ، ينفذ باستمرار الأوامر التي التقى بها من أعلى إلى أسفل.
إذا كنت تتذكر الرياضيات ، فهناك يمكنك التعرف على مبدأ الاستقراء الرياضي strong>. وهي كالتالي:
عبارة معينة صحيحة لكل nbsp؛ طبيعي strong> إذا
نبسب ؛ نبسب ؛ 1. صالح لـ & nbsp؛ n = 1 & nbsp؛ و
نبسب ؛ نبسب ؛ 2. من صحة العبارة لأي تعسفي طبيعي n = k & nbsp ؛ ويترتب على ذلك أنها صحيحة لـ & nbsp؛ n = k + 1.
في البرمجة ، تسمى هذه التقنية العودية
التكرار هو طريقة لتحديد مجموعة من الكائنات من حيث المجموعة نفسها ، بناءً على حالات أساسية بسيطة معينة. code>
التكراري strong> سيطلق عليه أيضًا إجراء (وظيفة) strong> يستدعي نفسه مباشرة أو من خلال إجراءات ووظائف أخرى code>
مثال على إجراء تكراري:
<قبل>
الإجراء Rec (a: عدد صحيح) ؛
يبدأ
نبسب ؛ نبسب ؛ إذا أ & GT. 0 بعد ذلك
نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ Rec (أ - 1) ؛
نبسب ؛ نبسب ؛ اكتب)؛
end؛
من الناحية التخطيطية ، يمكن تمثيل عمل العودية بواسطة مخطط انسيابي
نبسب ؛
يتم تنفيذ الإجراء Rec () & nbsp؛ مع المعلمة 3. ثم ، داخل الإجراء مع المعلمة 3 ، يتم استدعاء الإجراء مع المعلمة 2 ، وهكذا ، حتى يتم استدعاء الإجراء مع المعلمة 0. عندما يتم استدعاء الإجراء مع تم استدعاء المعلمة 0 ، ولن يحدث الاستدعاء المتكرر بالفعل ، وسوف يطبع الإجراء مع المعلمة 0 الرقم 0 وينتهي. ثم يتم نقل التحكم مرة أخرى إلى الإجراء بالمعامل 1 ، كما أنه ينهي عمله بطباعة الرقم 1 ، وهكذا. قبل الإجراء مع المعلمة 3. نبسب ؛
يتم تخزين جميع الإجراءات التي تسمى في الذاكرة حتى يكملوا عملهم. يسمى عدد الإجراءات المتزامنة عمق العودية code>.