تفسير عملية التكرار الريكورسية في كتلة if-else بلغة الجافا
باختصار، السبب في طباعة “TEST” أربع مرات يعود إلى استخدامك لدالة التكرار (التوالي) في الكود. دعونا نقوم بتحليل الشيفرة لفهم هذا السلوك.
في الشيفرة التي قدمتها، لديك دالة test
في صف الاختبار Test
. عند استدعاء هذه الدالة مع قيمة count
تساوي 5، ستقوم الدالة بدخول فرع else
لأن قيمة count
ليست تساوي 1. بعد ذلك، تقوم الدالة بطباعة “Inside Else” وثم تستدعي نفسها مرة أخرى بقيمة count
المنخفضة بمقدار واحد (--count
)، وهكذا تتكرر العملية.
في كل مرة يتم استدعاء الدالة مرة أخرى، يتم طباعة “Inside Else” ويتم تقليل قيمة count
بواحد. عندما تصل قيمة count
إلى 1، يتم تنفيذ الشرط في الفرع if
وتتم طباعة “Inside IF”. بعد ذلك، يعود التنفيذ إلى المكان الذي تم فيه استدعاء الدالة للمرة الأخيرة في الفرع else
الأصلي، وتتم طباعة “TEST”.
إذا كانت قيمة count
الأصلية هي 5، فإن الدالة ستتم استدعاؤها 5 مرات (4 في الفرع else
ومرة واحدة في الفرع if
)، وبالتالي يتم طباعة “TEST” 4 مرات.
هذا يشير إلى أن الكود يعتمد على التكرار التوالي وتقليل القيمة مع كل استدعاء للدالة، مما يؤدي إلى طباعة “TEST” بعد اكتمال التكرارات الأربع.
المزيد من المعلومات
لفهم تفصيل أكثر حول كيفية عمل الشيفرة المقدمة ولماذا تم طباعة “TEST” أربع مرات، يجب أن نستعرض كيفية تنفيذ الدالة test
في كل مرة يتم فيها استدعاءها.
عندما يتم استدعاء t.test(5)
في الدالة الرئيسية main
، يبدأ التنفيذ بالدخول إلى دالة test
في صف الاختبار Test
مع قيمة count
تساوي 5. يتم التحقق من الشرط، ونظرًا لأن قيمة count
ليست تساوي 1، يتم دخول الفرع else
.
في الفرع else
، يتم طباعة “Inside Else”، ثم يتم استدعاء نفس الدالة test
مرة أخرى مع قيمة count
المنخفضة بواحد، أي test(4)
، وهكذا تكمل العملية.
يتم تكرار هذه العملية حتى يصل count
إلى 1. عندما تكون قيمة count
تساوي 1، يتم تنفيذ الشرط في الفرع if
ويتم طباعة “Inside IF”. بعد ذلك، يعود التنفيذ إلى المستوى السابق في الفرع else
ويتم طباعة “TEST”.
لذلك، كلما يتم استدعاء الدالة test
، يتم تقليل قيمة count
بواحد، ويتم تكرار العملية حتى يتم الوصول إلى قيمة count
تساوي 1. وبما أن هذا يحدث أربع مرات (مع قيم الـ count من 5 إلى 1)، يتم طباعة “TEST” أربع مرات في النهاية.
هذا يوضح كيف تم التحكم في عملية الطباعة ولماذا تم طباعة “TEST” أربع مرات في هذا السياق.