دروس جافا

جافا هوم جافا مقدمة ابدأ جافا بناء جملة جافا تعليقات جافا متغيرات جافا أنواع بيانات جافا جافا نوع الصب مشغلي جافا سلاسل جافا جافا الرياضيات جافا المنطقية جافا إذا ... آخر تبديل جافا جافا أثناء التكرار جافا للحلقة جافا بريك / متابعة جافا المصفوفات

طرق جافا

طرق جافا معلمات طريقة جافا طريقة جافا التحميل الزائد نطاق جافا العودية جافا

فئات جافا

جافا OOP فئات / كائنات جافا سمات فئة Java طرق فئة جافا منشئو جافا معدِّلات جافا تغليف جافا حزم جافا / API الوراثة جافا جافا تعدد الأشكال فئات جافا الداخلية جافا التجريد واجهة جافا جافا Enums مدخلات مستخدم جافا تاريخ جافا جافا ArrayList جافا لينكدليست جافا HashMap جافا هاشسيت جافا التكرار فئات Java Wrapper استثناءات Java جافا RegEx خيوط جافا جافا لامدا

معالجة ملفات جافا

ملفات جافا جافا إنشاء / كتابة الملفات ملفات قراءة جافا جافا حذف الملفات

جافا كيف

أضف عددين

مرجع جافا

كلمات جافا طرق سلسلة جافا طرق جافا للرياضيات

أمثلة جافا

أمثلة جافا مترجم جافا تمارين جافا مسابقة جافا شهادة جافا


العودية جافا


العودية جافا

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

قد يكون من الصعب بعض الشيء فهم التكرار. أفضل طريقة لمعرفة كيفية عملها هي تجربتها.


مثال العودية

من السهل جمع عددين معًا ، لكن إضافة نطاق من الأرقام أكثر تعقيدًا. في المثال التالي ، يتم استخدام العودية لإضافة نطاق من الأرقام معًا عن طريق تقسيمها إلى مهمة بسيطة تتمثل في إضافة رقمين:

مثال

استخدم العودية لجمع كل الأعداد حتى 10.

public class Main {
  public static void main(String[] args) {
    int result = sum(10);
    System.out.println(result);
  }
  public static int sum(int k) {
    if (k > 0) {
      return k + sum(k - 1);
    } else {
      return 0;
    }
  }
}

شرح المثال

عندما sum()يتم استدعاء الوظيفة ، فإنها تضيف معلمة kإلى مجموع جميع الأرقام الأصغر من kوتعيد النتيجة. عندما تصبح k 0 ، تقوم الوظيفة بإرجاع 0. عند التشغيل ، يتبع البرنامج الخطوات التالية:

10 + مجموع (9)
10 + (9 + مجموع (8))
10 + (9 + (8 + مجموع (7)))
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + مجموع (0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0

نظرًا لأن الوظيفة لا تستدعي نفسها عندما kتكون 0 ، يتوقف البرنامج عند هذا الحد ويعيد النتيجة.


حالة التوقف

مثلما يمكن أن تصطدم الحلقات بمشكلة التكرار اللانهائي ، يمكن أن تواجه الوظائف العودية مشكلة العودية اللانهائية. العودية اللانهائية هي عندما لا تتوقف الوظيفة أبدًا عن استدعاء نفسها. يجب أن يكون لكل دالة تكرارية حالة توقف ، وهي الحالة التي تتوقف فيها الوظيفة عن استدعاء نفسها. في المثال السابق ، تكون حالة التوقف عندما kتصبح المعلمة 0.

من المفيد رؤية مجموعة متنوعة من الأمثلة المختلفة لفهم المفهوم بشكل أفضل. في هذا المثال ، تضيف الدالة نطاقًا من الأرقام بين البداية والنهاية. حالة التوقف لهذه الدالة العودية عندما لا تكون النهاية أكبر من البداية :

مثال

استخدم العودية لجمع كل الأرقام بين 5 إلى 10.

public class Main {
  public static void main(String[] args) {
    int result = sum(5, 10);
    System.out.println(result);
  }
  public static int sum(int start, int end) {
    if (end > start) {
      return end + sum(start, end - 1);
    } else {
      return end;
    }
  }
}