التعليم السعودي
تعريف دوال تستدعي نفسها في الخوارزميات – التمرين الأول
جدول المحتويات
تعريف دوال تستدعي نفسها في الخوارزميات – التمرين الأول
المطلوب
أكتب دالة تستدعي نفسها, إسمها CountFromTo
, تعطيها أي عددين صحيحين فتقوم بطباعة جميع الأعداد الصحيحة الموجودة إبتداءاً من العدد الأول وصولاً إلى العدد الثاني.
فعلياً, سنجعل هذين العددين يحددان كم مرة ستقوم الدالة باستدعاء نفسها.
في البرنامج, قم باستدعاء الدالة CountFromTo
لتجربتها.
النتيجة المطلوبة
إذا قمنا باستدعاء الدالة CountFromTo()
و أعطيناها القيم 1 و 3, ستطبع لنا جميع الأعداد من 1 إلى 3 كالتالي.
كود الجافا
- package recursion;
- public class Recursion {
- /* ——————————- هنا قمنا بتعريف الدالة —————————— */
- public static int CountFromTo ( int start, int end ) {
- if ( start <= end )
- {
- System.out.print(“counter = “ +start+ “\n”);
- return CountFromTo( start + 1, end );
- }
- return 0;
- }
- /* ————————— من هنا يبدأ البرنامج بالتنفيذ ————————— */
- public static void main (String[] args) {
- CountFromTo(1, 3);
- }
- }
شرح الكود
- public static int CountFromTo ( int start, int end ) {
- if ( start <= end )
- {
- System.out.print(“counter = “ +start+ “\n”);
- return CountFromTo( start + 1, end );
- }
- return 0;
- }
-
- هنا أنشأنا الدالة
CountFromTo()
و حددنا أن نوعهاint
و وضعنا لها باراميترينstart
وend
, هذان المتغيران يحددان كم مرة ستقوم الدالة باستدعاء نفسها.
المتغيرstart
يحدد من أي عدد ستبدأ عملية إستدعاء الدالة لنفسها, فعلياً سنستخدمه كعداد أيضاً حيث أننا سنضيف عليه 1 كلما استدعت الدالةCountFromTo()
نفسها.
المتغيرend
يحدد عند أي عدد ستتوقف الدالة عن إستدعاء نفسها من جديد. - إذاً, عند إستدعاء هذه الدالة يجب أن نمرر لها عددين من النوع
int
- في السطر 9 إلى السطر 13, وضعنا شرط لمقارنة قيمة المتغيرين
start
وend
في هذا الشرط قلنا أنه إذا كانت قيمة المتغيرstart
أصغر أو تساوي قيمة المتغيرend
سيحدث التالي:- أولاً سيتم عرض قيمة المتغير
start
- بعدها سيتم إستدعاء
CountFromTo()
من جديد ( أي ستفعلreturn
لنفسها ) مع زيادة قيمة العدادstart
واحداً. - إذاً في كل مرة تقوم الدالة
CountFromTo()
باستدعاء نفسها ستأخذ ( قيمة العدادstart
السابقة زائد 1 ) و قيمة المتغيرend
الثابتة كـ Arguments. - عندما تصبح قيمة المتغير
start
أكبر من قيمة المتغيرend
ستتوقف الدالةCountFromTo()
عن إستدعاء نفسها.
- أولاً سيتم عرض قيمة المتغير
- في السطر 15, قلنا أنه بعد تتوقف الدالة
CountFromTo()
عن إستدعاء نفسها, سيتم إرجاع القيمة 0 إلى الدالةmain()
حيث تم إستدعاءها من الأساس. - ملاحظة: لو لم نضع الأمر
return 0;
في نهاية الدالة, كان سيظهر لك خطأ في البرنامج و السبب أن نوع الدالة في الأساسint
, إذاً يجب أن ترجع أي قيمة نوعهاint
إلى المكان الذي تم استدعائها منه حتى لا يحدث خطأ.
- هنا أنشأنا الدالة
- public static void main (String[] args) {
- CountFromTo(1, 3);
- }
- هنا قمنا باستدعاء الدالة
CountFromTo()
و مررنا لها القيمتين 1 و 3, بالتالي سيتم طباعة جميع الأعداد الصحيحة من 1 إلى 3. - إذاً أول قيمة للعداد
start
ستكون 1, و آخر قيمة ستكون 4, لأنها عندما تصبح أكبر من قيمة المتغيرend
ستتوقف عن استدعاء نفسها.
المصدر: تعريف دوال تستدعي نفسها في الخوارزميات – التمرين الأول – المناهج السعودية