JavaScript is not enabled!...Please enable javascript in your browser

جافا سكريبت غير ممكن! ... الرجاء تفعيل الجافا سكريبت في متصفحك.

Home

دوال الاستدعاء الذاتي Kotlin Recursive بالامثلة


 

سنناقش في هذا الدرس دوال الاستدعاء الذاتي recursive functions : هي الدالة التي تقوم باستدعاء نفسها باستمرار وتعرف بدالة الاستدعاء الذاتي هذا المفهوم ليس اصليا في Kotlin ولكنة موجود في جميع اللغات البرمجية. ويمكن اعتبارها الدالة كحقلة تكرارية ولكن ليسا متشابهين تماما.

ويجب ان تحتوي دوال الاستدعاء الذاتي على شرط لايقاف الاستدعاء والا فانة سيتم تشغيل الدالة الى اجل غير مسمى. ويعمتد شرط ايقاف الدالة في الغالب الى قمية يتم تمريرها الى الدالة:

الصيغة الاساسية لدالة الاستدعاء الذاتي: 

fun sayBye(){
   sayBye()
}

عندما يتم إستدعاء الدالة من داخلها هذه تسمى الاستدعاء الذاتي.

دعونا نكتب برنامج لحساب المظروب لرقم معين.اولا سوف نقوم بكتابة البرنامج باستخدام For loop وثم سوف نقوم باستخدام دالة الاستدعاء الذاتي .

هذا هو التنفيذ باستخدام For loop .

fun main() {
    println("Factorial of 5 is: ${factorial(5)}")
}
fun factorial(n: Int): Int{
    var factorialOfN = 1
    for(i in n downTo 1){
        factorialOfN *= i
    }
    return factorialOfN
}
المخرجات
Factorial of 5 is: 120

الان لنقوم بتنفيذها باستخدام دالة الاستدعاء الذاتي
fun main() {
    println("Factorial of 5 is: ${factorial(5)}")
}
fun factorial(n: Int): Int{
    if(n == 1)
        return 1
    return n * factorial(n - 1)
}

سينتج ايضا نفس النتائج

الشرح:

  1. اولا factorial(5) سيتم استدعاءة من دالة  main() 
  2. داخل factorial(5) ستم فحص الشرط وستم ارجاع 5 * factorial(4).
  3. الان factorial(4) سوف تستدعاء وسوف تقوم بارجاع 4 * factorial(3)
  4. التالي factorial(3) سوف تستدعاء وسوف تقوم بارجاع 3 * factorial(2).
  5. نفس factorial(2)  سوف تستدعاء وسوف تقوم بارجاع 2 * factorial(1)
  6. في الاخير factorial(1) سوف تقوم بارجاع القيمة 1 بعد فحص الشرط بواسطة if وتنتهي دالة الاستدعاء الذاتي هنا.
  7. سيتم الحصول على النتيجة من الخطوة رقم 6 وسوف تعود الى الخطوة 5 على سبيل المثال 2 * factorial(1) سوف تصبح 2*1.
  8. وبالمثل هذة القيم سوف تعود الى كل الخطواط السابقة وفي الاخير القيمية سوف ترجع الى الدالة الرئيسة وسوف تكون 5*4*3*2*1.

الخلاصة

ناقشنا في هذا الدرس دوال الاستدعاء الذاتي بشكل عام وكيف يتم تنفيذها في Kotlin ويمكنك البحث عن المزيد حول دوال الاستدعاء الذاتي واستخدامها.

NameEmailMessage