English  

كتب استدعاء ذاتي

اذا لم تجد ما تبحث عنه يمكنك استخدام كلمات أكثر دقة.

عرض المزيد

استدعاء ذاتي (معلومة)


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

يجب أن تمتلك دالة الاستدعاء الذاتي على خطوتين أساسيتين:

1- وجود شرط توقف معرف بشكل صحيح مثل:

If (x<=1) return 1 

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

2- وجود خطوة الاستدعاء الذاتي التي يجب أن تعرف بشكل صحيح بحيث تؤدي إلى حالة توقف مثل:

(Return x*factorial(x-1

تعريفات رسمية للاستدعاء الذاتي

في الرياضيات وعلم الحاسوب، تظهر فئة من الكائنات أو الأساليب سلوك استدعاء ذاتي عندما يكون بالإمكان تعريفهم عن طريق خاصيتين:

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

    مثال تقليدي للاستدعاء الذاتي هو تعريف دالة العاملي، مثال بلغلة السي:

    unsigned int factorial(unsigned int n) { if (n <= 1) return 1; else return n * factorial(n-1); }

    تستدعي الدالة نفسها عودياً على نسخة أصغر من المدخل (n-1) وتضرب نتيجة الاستدعاء الذاتي بـ n، حتى تصل إلى حالة الأساس، بشكل مماثل للتعريف الرياضي للعاملي.

    مثال تقليدي اخر بلغه السي بلس بلس:

    #include <iostream> using namespace std; int main () { long number; cout << "Please type a number: "; cin >> number; cout << number << "! = " << factorial (number); return 0;

    في المثال السابق قمنا بكتابة إستدعاء ذاتى للدالة، أي الدالة قامت بمناداة نفسها من داخلها.

    لاستخدام الاستدعاء الذاتي في خوارزمية إيجابيات وسلبيات. الميزة الرئيسية هي عادةً البساطة. الضرر الرئيسي هو غالباً أن الخوارزمية قد تستلزم كمية كبيرة من الذاكرة إذا كان عمق الاستدعاء الذاتي كبير جداً.

    مبرهنة الاستدعاء الذاتي

    في نظرية المجموعات، هذه مبرهنة التي تضمن وجود دوال معرفة بالاستدعاء الذاتي. بإعطاء مجموعة X، عنصر a في X ودالة ، تنص المبرهنة أنه هنالك دالة مميزة (حيث أن ترمز مجموعة الأعداد الطبيعية شاملة الصفر) بحيث أن:

    لأي عدد طبيعي n.

    برهان التميز

    لتكن و دالتين بحيث أن:

    بحث أن a هو عنصر في X.

    بالإمكان البرهنة بالاستقراء أن لكل الأعداد الطبيعية n:

    الأساس: وبالتالي فإن المساواة تنطبق أيضا على .
    خطوة الاستقراء: لنفرض أن لبعض . إذن
    ومن هنا F(k) = G(k) يؤدي إلى F(k+1) = G(k+1).

    بالاسقراء , لكل .

    أمثلة

    بعض العلاقات العودية الشائعة:

    المصدر: wikipedia.org