تخطَّ إلى المحتوى

شرح Java

البرمجة التكرارية (Recursion)

الدرس 27 من 42· ⏱ 1 دقائق قراءة

ما هي البرمجة التكرارية؟

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

العناصر الأساسية

  1. الحالة الأساسية (base case): شرط التوقف — بدونها يتكرر البرنامج بلا نهاية.
  2. الحالة التكرارية (recursive case): الجزء الذي يستدعي نفسه بمعامل أصغر.

المثال الكلاسيكي: المضروب

static long factorial(int n) {
  if (n <= 1) return 1;           // الحالة الأساسية
  return n * factorial(n - 1);     // الحالة التكرارية
}

System.out.println(factorial(5)); // 120

مثال: فيبوناتشي

static int fibonacci(int n) {
  if (n <= 0) return 0;
  if (n == 1) return 1;
  return fibonacci(n - 1) + fibonacci(n - 2);
}

System.out.println(fibonacci(6)); // 8

مثال: مجموع مصفوفة

static int sum(int[] arr, int index) {
  if (index < 0) return 0;
  return arr[index] + sum(arr, index - 1);
}

int[] nums = {1, 2, 3, 4, 5};
System.out.println(sum(nums, nums.length - 1)); // 15

التكرارية مقابل الحلقات

المقارنةRecursionحلقة
القوةبسيطة لهياكل شجرية وفروعأسرع عمليًا وأكثر وضوح للحلقات البسيطة
الذاكرةكل استدعاء يحجز مكانًا على المكدّسلا ذاكرة إضافية تقريبًا
خطرتجاوز المكدّس (StackOverflowError)لا يوجد هذا الخطر

متى نستخدم Recursion؟

  • هياكل شجرية: ملفات المجلدات، عُقد الـ Tree.
  • خوارزميات فرعية: تقسيم وتسخير.
  • فروع متعددة: فيبوناتشي، محاكاة.

⚠️ لا تستخدم recursion لمشاكل بسيطة يمكن حلها بحلقة — الـ recursion أقل أداءً بسبب تكلفة استدعاء الدالة المتكررة.

🎯 التالي: الترتيب والبحث في Java.

شرح البرمجة التكرارية (Recursion) — Java بالعربي
البرمجة التكرارية (Recursion)Java بالعربي · The Code Fix

📚 لمزيد من التعمّق في Java، راجِع توثيق Java من Oracle.

هل كان هذا الدرس مفيدًا؟