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

المطلوب

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

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


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

الخوارزمية

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

كود الجافا

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.

دورات

أدوات