المطلوب
أكتب دالة تستدعي نفسها, إسمها 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.