Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

أساسيات الاستدعاء الذاتي

جزء من قسم الأساسيات في رحلة C على Coddy. الدرس 50 من 63.

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

لنلقِ نظرة على دالة Recursive بسيطة تحسب factorial:

int factorial(int n) {
    // الحالة الأساسية: مضروب 0 أو 1 هو 1
    if (n <= 1) {
        return 1;
    }
    
    // الحالة التكرارية: n! = n * (n-1)!
    return n * factorial(n - 1);
}

تحتاج كل دالة Recursive إلى:

  1. حالة أساسية لإيقاف الاستدعاء التكراري
  2. حالة تكرارية تقترب من الحالة الأساسية

على سبيل المثال، حساب factorial(3):

  • يستدعي factorial(3) الدالة factorial(2)
  • يستدعي factorial(2) الدالة factorial(1)
  • تعيد factorial(1) القيمة 1 (حالة Base)
  • تعيد factorial(2) القيمة 2 * 1 = 2
  • تعيد factorial(3) القيمة 3 * 2 = 6
challenge icon

التحدي

سهل

أنشئ function باسم sumToN تستخدم الاستدعاء الذاتي لحساب مجموع الأعداد من 1 إلى n.

على سبيل المثال:

  • يجب أن تُرجع sumToN(3) القيمة 6 (1 + 2 + 3)
  • يجب أن تُرجع sumToN(5) القيمة 15 (1 + 2 + 3 + 4 + 5)

يجب أن تقوم function بما يلي:

  1. استخدم حالة Base عندما تكون n تساوي 1 (return 1)
  2. خلاف ذلك، أرجع n مضافًا إليها مجموع الأعداد من 1 إلى (n-1)

جرّب بنفسك

#include <stdio.h>

// اكتب دالة sumToN الخاصة بك هنا

// لا تغيّر دالة main()
int main() {
    int n;
    scanf("%d", &n);
    
    printf("%d", sumToN(n));
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: مترجم C عبر الإنترنت