Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals 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 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;
}
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);
}
public static void main (String[] args) { CountRecursively(3); }
  • هنا قمنا باستدعاء الدالة CountRecursively() و مررنا لها القيمة 3.
  • إذاً أول قيمة للعداد counter ستكون 3, و آخر قيمة له ستكون 0.

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


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