الدوال العودية الجزء الثاني
جزء من قسم المنطق وتدفق التنفيذ في رحلة Python على Coddy. الدرس 61 من 78.
تتكوّن الدوال العودية عادةً من جزأين:
- الحالة الأساسية: تحدد متى يجب أن يتوقف الاستدعاء العودي.
- الخطوة العودية: تستدعي الدالة نفسها بمدخل أصغر.
مثال: حساب المضروب باستخدام الاستدعاء الذاتي:
def factorial(n):
if n == 1: # الحالة الأساسية
return 1
return n * factorial(n - 1) # استدعاء ذاتي
print(factorial(5)) # الناتج: 120هنا، تواصل الدالة استدعاء نفسها باستخدام n - 1 حتى تصل إلى 1، وعندها يتوقف الاستدعاء التكراري.
مثال: عكس سلسلة نصية:
def recursive_reverse(s):
if len(s) <= 1: # الحالة الأساسية: سلسلة فارغة أو مكوّنة من حرف واحد
return s
else:
return recursive_reverse(s[1:]) + s[0] # خطوة الاستدعاء الذاتي
text = "hello"
result = recursive_reverse(text)
print(result)
# الناتج: ollehفي هذا المثال، تستدعي الدالة recursive_reverse نفسها مع بقية السلسلة النصية (s[1:]) حتى تصبح السلسلة النصية فارغة أو لا يتبقى فيها سوى محرف واحد. يضيف كل استدعاء المحرف الأول إلى نتيجة الاستدعاء التكراري، وبذلك يعكس ترتيب السلسلة النصية.
التحدي
سهلاكتب دالة递归 باسم fibonacci تأخذ عددًا صحيحًا موجبًا n وسيطًا، وتُرجع رقم فيبوناتشي رقم n. تُعرَّف متتالية فيبوناتشي كما يلي:
fibonacci(1) = 0fibonacci(2) = 1fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)عندما يكونn > 2.
مثال على الإدخال:
n = 6مثال على الإخراج:
5جرّب بنفسك
def fibonacci(n):
# اكتب الكود هنايتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1استكشاف المتغيرات
الثوابتإسناد المتغيرات المتعددةتبديل المتغيراتالمتغيرات النائبةتقريب الأرقامتحويل القوائم4تطبيق سجل جهات الاتصال
عرض القائمةإضافة جهة اتصال7المجموعات - الجزء الثاني
العمليات الرياضية - الجزء الأولالعمليات الرياضية - الجزء الثانيمراجعة - البحث عن الكنزالمجموعات الجزئية والمجموعات الشاملةالتكرار عبر المجموعاتمراجعة - متتبع البطولة10أساسيات تضمين القوائم (List Comprehensions)
الصيغة البرمجيةإنشاء قوائم بسيطةإضافة الشروطاستخدام تجميع البياناتمراجعة - بيت القوائممراجعة - عناصر الحرية5اتخاذ القرارات المتقدم
المعامل الثلاثيالتحقق من الانتماءالتحقق من الهويةأخطاء الإزاحةمراجعة - فلتر العطلات8مدير سجلات الطلاب
نظرة عامة على المشروعإضافة طالب11الدوال المتقدمة
إرجاع قيم متعددةدوال Lambda الجزء الأولدوال Lambda الجزء الثانيتحدي المراجعة - فرز Lambdaالدوال العودية الجزء الأولالدوال العودية الجزء الثانيمراجعة - جمع القوائم المتداخلة3القواميس - الجزء الثاني
دوال القواميسالقواميس المتداخلةالتحقق من وجود المفاتيحالتكرار عبر القواميسمراجعة - عداد التكرار9تجميع البيانات المتقدم
استخدام Sumإيجاد الحد الأدنى والأقصىفرز البيانات بكفاءةمراجعة - Dictionary Sorter12أساسيات معالجة الأخطاء
ما هي معالجة الأخطاء؟كتلة Try و Exceptالتعامل مع استثناءات متعددةمراجعة - أخطاء عربة التسوقتدرّب بنفسك: مترجم Python عبر الإنترنت