عودية
المحتويات
- cin >> number;
- (Fib(1 هو 1 [حالة أساس]
- دوال الاستدعاء الذاتي
- If (x<=1) return 1
- {
- الاستدعاء الذاتي في علم الحاسوب
- 1 في
- }
- حالة أساس بسطية (أو عدة حالات)، و
- استدعاء ذاتي
- مبرهنة الاستدعاء الذاتي
- العودية اليسرى
- مثال: الأعداد الطبيعية
- أمثلة
- فكاهات الاستدعاء الذاتي
- تعريفات رسمية للعودية
- استدعاء ذاتي
- برهان التميز
- خطوة الاستقراء: لنفرض أن لبعض . إذن

قبل الخوض في التفاصيل، العَوْدية هي عملية تكرار الشيء بطريقة مشابهة ذاتيا. مثلًا، عندما يكون سطحا مرآتين متوازيين تماماً مع بعضها البعض الصور المتداخلة هي عبارة عن نوع من استدعاء ذاتي لانهائي. للمصطلح معانٍ متنوعة خاصة لمجموعة منوعة من التخصصات من اللغويات إلى المنطق. الاستعمال الأكثر شيوعاً للعودية هو في الرياضيات وعلم الحاسوب، حيث أنه يشير إلى طريقة لتعريف دوال بحيث أن الدالة المعرفة تُستعمل في تعريف نفسها. وفيما يلي تفاصيل أوسع عن ذلك.
1- وجود شرط توقف معرف بشكل صحيح مثل:
يجب أن تمتلك دالة الاستدعاء الذاتي على خطوتين أساسيتين:
cin >> number;
cout << number << "! = " << factorial (number);
وفي هذا السياق، لاستخدام الاستدعاء الذاتي في خوارزمية إيجابيات وسلبيات. الميزة الرئيسية هي عادةً البساطة. الضرر الرئيسي هو غالباً أن الخوارزمية قد تستلزم كمية كبيرة من الذاكرة إذا كان عمق الاستدعاء الذاتي كبير جداً.
إضافةً إلى ذلك، return 0;في المثال السابق قمنا بكتابة إستدعاء ذاتى للدالة، أي الدالة قامت بمناداة نفسها من داخلها.
(Fib(1 هو 1 [حالة أساس]
(Fib(n هو ((Fib(n-1) + Fib(n-2) [تعريف بالاستدعاء الذاتي]
وفي هذا الصدد، الكثير من البديهيات مبنية على قواعد استدعاء ذاتي. مثلا، التعريف الرسمي للأعداد الطبيعية في نظرية المجموعات هو: 1 هو عدد طبيعي، ولكل عدد طبيعي عدد لاحق، والذي هو بحد ذاته عدد طبيعي. باستخدام حالة الأساس وقاعدة عود، بالإمكان إنتاج مجموعة كل الأعداد الطبيعية.
وفي هذا السياق، كائنات معرفة بالاستدعاء الذاتي تشتمل على الدوال، المجموعات وخاصة الكسيريات.
ومن ناحية أخرى، توضيح فكاهي يقول: «لكي تفهم الاستدعاء الذاتي، يجب عليك فهم الاستدعاء الذاتي». أو ربما بصورة أدق، من أندرو بلوتكين: «إذا كنت تعرف ما هو الاستدعاء الذاتي، تذكر الجواب فقط. وإلا، جد شخصاً يقف أقرب إلى دوغلاس هوفشتادتر منك; ثم إساله أو إسالها ما هو الاستدعاء الذاتي.»
لكل الأعداد الصحيحة n> 1:
دوال الاستدعاء الذاتي
كذلك، دالة اكرمن هي دالة استدعاء ذاتي مشهورة، والتي بخلاف متتالية فيبوناتشي، لا يمكن التعبير عنها بدون الاستدعاء الذاتي.
في هذا الإطار، دالة قد تكون معرفة جزئياً بنفسها. مثال مألوف هو متتالية فيبوناتشي: (F(n) = F(n − 1) + F(n − 2.
إضافةً إلى ذلك، ليكون التعريف مفيداً، يجب أن يوصل إلى قيم غير معرفة بالاستدعاء الذاتي، في هذه الحالة F(0) == 0 و F(1) == 1.
If (x<=1) return 1
وعلى صعيد آخر، 2- وجود خطوة الاستدعاء الذاتي التي يجب أن تعرف بشكل صحيح بحيث تؤدي إلى حالة توقف مثل:
بدون هذه الخطوة يستمر الاستدعاء إلى مالا نهاية.
(Return x*factorial(x-1
{
- if (n <= 1)
- return 1;
- else
- return n * factorial(n-1);
الاستدعاء الذاتي في علم الحاسوب
unsigned int factorial(unsigned int n)
إضافةً إلى ذلك، طريقة شائعة لتبسيط المسائل هي لتقسيم المسألة إلى مسائل جزئية من نفس النوع. كتقنية برمجة، يطلق عليها فرق تسد وهي المفتاح لتصميم الكثير من الخوارزميات المهمة. فرق تسد هي عبارة عن نهج لحل المسائل من الأعلى إلى الأسفل، بحيث يتم حل المسائل عن طريق حل نسخ أصغر من المسألة. نهج معاكس هي برمجة ديناميكية. هذا النهج عبارة عن نهج لحل المسائل من الأسفل إلى الأعلى، بحيث يتم حل المسائل عن طريق حل نسخ أكبر من المسألة، حتى يتم الحصول على الحجم المطلوب.
وفي هذا السياق، مثال تقليدي للاستدعاء الذاتي هو تعريف دالة العاملي، مثال بلغلة السي:
1 في
إذا كان n في ، إذن n + 1 في
وفي هذا السياق، مجموعة الأعداد الطبيعية هي المجموعة الأصغر التي تحقق الخاصتين السابقين.
}
وفي هذا الصدد، تستدعي الدالة نفسها عودياً على نسخة أصغر من المدخل (n-1) وتضرب نتيجة الاستدعاء الذاتي بـ n، حتى تصل إلى حالة الأساس، بشكل مماثل للتعريف الرياضي للعاملي.
- مثال تقليدي اخر بلغه السي بلس بلس:#include
- using namespace std;
- int main
- {
- long number;
- cout << "Please type a number: ";
حالة أساس بسطية (أو عدة حالات)، و
- مجموعة من القواعد التي تقلص كل الحالات الأخرى نحو حالة الأساس.
- مثلا، التعريف بالاستدعاء الذاتي التالي هو تعريف لأسلاف شخص:
- والدا شخص هم أسلافه (حالة الأساس)
- والدا أسلاف شخص هم كذلك أسلافه (خطوة الاستدعاء الذاتي).
- متتالية فيبوناتشي هي مثال تقليدي للاستدعاء الذاتي:
- (Fib(0 هو 0 [حالة أساس]
استدعاء ذاتي
- بي إتش بي هي اختصار لـ "PHP Hypertext Preprocessor".
- WINE هي اختصار لـ "Wine Is Not an Emulator.
- GNU هي اختصار لـ "GNU's Not Unix"
- الاستدعاء الذاتي في الرياضيات
- المجموعات المعرفة بالاستدعاء الذاتي
من جانب آخر، فكاهة مشابهة تظهر في النسخة الإنجليزية من محرك بحث جوجل: عندما تبحث عن recursion، يقترح الموقع «هل تقصد: Recursion».
من جانب آخر، مثال آخر يوجد في فهرس في صفحة 269 في بعض نسخ كتاب كيرنيغان وريتشي «لغة البرمجة سي»; فإن الفهرس يشير باستدعاء ذاتي إلى نفسه:استعاء ذاتي 86. 139. 141. 182. 202. 269.
إضافةً إلى ذلك، اختصارات الاستدعاء الذاتي تمكن أن تكون نوع من الفكاهة في الاستدعاء الذاتي. بعض الأمثلة:
إذا لم تزل تعرفه، راجع «استدعاء ذاتي».
مبرهنة الاستدعاء الذاتي
لأي عدد طبيعي n.
في هذا الإطار، في نظرية المجموعات، هذه مبرهنة التي تضمن وجود دوال معرفة بالاستدعاء الذاتي. بإعطاء مجموعة X، عنصر a في X ودالة ، تنص المبرهنة أنه هنالك دالة مميزة (حيث أن ترمز مجموعة الأعداد الطبيعية شاملة الصفر) بحيث أن:
العودية اليسرى
عودية (علم الحاسوب)
مثال: الأعداد الطبيعية
كذلك، المثال القانوني للمجموعات المعرفة بالاستدعاء الذاتي هو الأعداد الطبيعية:
أمثلة
بعض العلاقات العودية الشائعة:
- عاملي:
- متتالية فيبوناتشي:
- أعداد كاتالان: ,
- حساب الفائدة المركبة
- برج هانوي
- دالة اكرمن
- طالع كذلك
وعلى صعيد آخر، نسبة ذهبية: (φ == 1 + (1/φ... بتذكر أن (φ = 1 + (1/φ ثم... (.../φ == 1 + (1/(1+(1/1+1
فكاهات الاستدعاء الذاتي
علاوةً على ذلك، يتم استخدام الاستدعاء الذاتي بشكل فكاهي في علم الحاسوب، البرمجة، الفلسفة، أو كتب الرياضايات المدرسية; المثالان التاليان قد تكون تعريفات في القاموس:
تعريفات رسمية للعودية
ومن جهة أخرى، في الرياضيات وعلم الحاسوب، تظهر فئة من الكائنات أو الأساليب سلوك استدعاء ذاتي عندما يكون بالإمكان تعريفهم عن طريق خاصيتين:
استدعاء ذاتي
راجع «استدعاء ذاتي».
برهان التميز
- لتكن و دالتين بحيث أن:
- بحث أن a هو عنصر في X.
- بالإمكان البرهنة بالاستقراء أن لكل الأعداد الطبيعية n:
- الأساس: وبالتالي فإن المساواة تنطبق كذلك على .
خطوة الاستقراء: لنفرض أن لبعض . إذن
بالاسقراء , لكل .
ومن هنا F(k) = G(k) يؤدي إلى F(k+1) = G(k+1).
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟