Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

الخوارزمياتتعريف دوال تستدعي نفسها - التمرين الثاني

المطلوب

أكتب دالة تستدعي نفسها إسمها CountRecursively تعطيها عدد صحيح أكبر من 0 فتقوم بطباعة جميع الأعداد الصحيحة الموجودة من هذا العدد وصولاً إلى 1 بشكل تنازلي.

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


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

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

الخوارزمية

شرح طريقة عمل الخوارزمية بدقة

كود الجافا

public class Recursion {
 
/* ------------------------------- هنا قمنا بتعريف الدالة ------------------------------ */
 
    public static int CountRecursively ( int counter )
    {
        if ( counter != 0 )
        {
            System.out.print("counter = " +counter+ "\n");
            return CountRecursively( counter - 1 );
        }
 
        return 0;
    }
 
/* --------------------------- من هنا يبدأ البرنامج بالتنفيذ --------------------------- */
 
    public static void main (String[] args)
    {
        CountRecursively(3);
    }
 
}

شرح الكود


    public static int CountRecursively ( int counter ) {
    
        if ( counter != 0 )
        {
            System.out.print("counter = " +counter+ "\n");
            return CountRecursively( counter - 1 );
        }
    
        return 0;
    
    }
  • هنا أنشأنا الدالة countRecursively() و حددنا أن نوعها int و وضعنا لها الباراميتر counter و نوعه int أيضاً.
  • إذاً, عند إستدعاء هذه الدالة يجب أن نمرر لها أي عدد من النوع int.
  • المتغير counter سيمثل العداد الذي يحدد كم مرة ستقوم الدالة باستدعاء نفسها حيث أنه سيتم إنقاص 1 من قيمته كلما استدعت الدالة نفسها.
  • الشرط الموضوع فيها يعني أنه إذا لم تكن قيمة المتغير counter تساوي 0 سيتم عرض قيمة المتغير counter, ثم إستدعاء الدالة من جديد مع إنقاص 1 من قيمة المتغير counter.
  • إذاً هذه الدالة تستمر في إستدعاء نفسها طالما أن قيمة المتغير counter لا تساوي 0 بعد.
  • في الأخير و بعد أن تتوقف الدالة عن إستدعاء نفسها, سيتم إرجاع القيمة 0 إلى الدالة main() حيث تم إستدعاءها من الأساس.
  • ملاحظة: لو لم نضع الأمر return 0; في نهاية الدالة, كان سيظهر لك خطأ في البرنامج و السبب أن نوع الدالة في الأساس int. إذاً يجب أن ترجع أي قيمة نوعها int إلى المكان الذي تم استدعاءها منه حتى لا يحدث خطأ.


    public static void main (String[] args) {
    
        CountRecursively(3);
    
    }
  • هنا قمنا باستدعاء الدالة CountRecursively() و مررنا لها القيمة 3.
  • إذاً أول قيمة للعداد counter ستكون 3, و آخر قيمة له ستكون 0.

نرجو منك الإنتقال لدورة البرمجة للمبتدئين الجديدة التي أنشأنها كبديل أفضل لهذه الدورة ففي تلك الدورة قمنا بتبسيط الشرح أكثر و جعلناك قادر على تجربة الكود بشكل مباشر في موقعنا.


دورة تعلم البرمجة للمبتدئين >