الخوارزمياتتعريف دوال تستدعي نفسها - التمرين الثاني
المطلوب
أكتب دالة تستدعي نفسها إسمها CountRecursively تعطيها عدد صحيح أكبر من 0 فتقوم بطباعة جميع الأعداد الصحيحة الموجودة من هذا العدد وصولاً إلى 1 بشكل تنازلي.
في البرنامج, قم باستدعاء الدالة CountRecursively() لتجربتها.
النتيجة المطلوبة
إذا قمنا باستدعاء الدالة countRecursively() و أعطيناها القيمة 3
ستطبع لنا جميع الأعداد من 3
إلى 1
كالتالي.
الخوارزمية
شرح طريقة عمل الخوارزمية بدقة
كود الجافا
شرح الكود
- هنا أنشأنا الدالة countRecursively() و حددنا أن نوعها int و وضعنا لها الباراميتر
counter
و نوعه int أيضاً. - إذاً, عند إستدعاء هذه الدالة يجب أن نمرر لها أي عدد من النوع int.
- المتغير
counter
سيمثل العداد الذي يحدد كم مرة ستقوم الدالة باستدعاء نفسها حيث أنه سيتم إنقاص 1 من قيمته كلما استدعت الدالة نفسها. - الشرط الموضوع فيها يعني أنه إذا لم تكن قيمة المتغير
counter
تساوي 0 سيتم عرض قيمة المتغيرcounter
, ثم إستدعاء الدالة من جديد مع إنقاص 1 من قيمة المتغيرcounter
. - إذاً هذه الدالة تستمر في إستدعاء نفسها طالما أن قيمة المتغير
counter
لا تساوي 0 بعد. - في الأخير و بعد أن تتوقف الدالة عن إستدعاء نفسها, سيتم إرجاع القيمة 0 إلى الدالة main() حيث تم إستدعاءها من الأساس.
- ملاحظة: لو لم نضع الأمر return 0; في نهاية الدالة, كان سيظهر لك خطأ في البرنامج و السبب أن نوع الدالة في الأساس int. إذاً يجب أن ترجع أي قيمة نوعها int إلى المكان الذي تم استدعاءها منه حتى لا يحدث خطأ.
- هنا قمنا باستدعاء الدالة CountRecursively() و مررنا لها القيمة 3.
- إذاً أول قيمة للعداد
counter
ستكون 3, و آخر قيمة له ستكون 0.