التعليم السعودي

تعريف دوال تستدعي نفسها في الخوارزميات – التمرين الأول 

تعريف دوال تستدعي نفسها في الخوارزميات – التمرين الأول
تعريف دوال تستدعي نفسها في الخوارزميات – التمرين الأول
تعريف دوال تستدعي نفسها في الخوارزميات – التمرين الأول

المناهج السعودية

تعريف دوال تستدعي نفسها في الخوارزميات – التمرين الأول

المطلوب

أكتب دالة تستدعي نفسها, إسمها CountFromTo, تعطيها أي عددين صحيحين فتقوم بطباعة جميع الأعداد الصحيحة الموجودة إبتداءاً من العدد الأول وصولاً إلى العدد الثاني.
فعلياً, سنجعل هذين العددين يحددان كم مرة ستقوم الدالة باستدعاء نفسها.

في البرنامج, قم باستدعاء الدالة CountFromTo لتجربتها.

النتيجة المطلوبة

إذا قمنا باستدعاء الدالة CountFromTo() و أعطيناها القيم 1 و 3, ستطبع لنا جميع الأعداد من 1 إلى 3 كالتالي.

الخوارزمية

كود الجافا

  1. package recursion;
  2. public class Recursion {
  3. /* ——————————- هنا قمنا بتعريف الدالة —————————— */
  4.     public static int CountFromTo ( int start, int end ) {
  5.         if ( start <= end )
  6.         {
  7.             System.out.print(“counter = “ +start+ “\n”);
  8.             return CountFromTo( start + 1, end );
  9.         }
  10.         return 0;
  11.     }
  12. /* ————————— من هنا يبدأ البرنامج بالتنفيذ ————————— */
  13.     public static void main (String[] args) {
  14.         CountFromTo(1, 3);
  15.     }
  16. }

شرح الكود

  1.     public static int CountFromTo ( int start, int end ) {
  2.         if ( start <= end )
  3.         {
  4.             System.out.print(“counter = “ +start+ “\n”);
  5.             return CountFromTo( start + 1, end );
  6.         }
  7.         return 0;
  8.     }
    • هنا أنشأنا الدالة 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 إلى المكان الذي تم استدعائها منه حتى لا يحدث خطأ.
  1.     public static void main (String[] args) {
  2.         CountFromTo(1, 3);
  3.     }
  • هنا قمنا باستدعاء الدالة CountFromTo() و مررنا لها القيمتين 1 و 3, بالتالي سيتم طباعة جميع الأعداد الصحيحة من 1 إلى 3.
  • إذاً أول قيمة للعداد start ستكون 1, و آخر قيمة ستكون 4, لأنها عندما تصبح أكبر من قيمة المتغير end ستتوقف عن استدعاء نفسها.

 
المصدر: تعريف دوال تستدعي نفسها في الخوارزميات – التمرين الأول – المناهج السعودية

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى