Menu
CoddyTech

الدوال العودية الجزء الثاني

جزء من قسم المنطق وتدفق التنفيذ في رحلة Python على Coddy. الدرس 61 من 78.

تتكوّن الدوال العودية عادةً من جزأين:

  1. الحالة الأساسية: تحدد متى يجب أن يتوقف الاستدعاء العودي.
  2. الخطوة العودية: تستدعي الدالة نفسها بمدخل أصغر.

مثال: حساب المضروب باستخدام الاستدعاء الذاتي:

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:]) حتى تصبح السلسلة النصية فارغة أو لا يتبقى فيها سوى محرف واحد. يضيف كل استدعاء المحرف الأول إلى نتيجة الاستدعاء التكراري، وبذلك يعكس ترتيب السلسلة النصية.

challenge icon

التحدي

سهل

اكتب دالة递归 باسم fibonacci تأخذ عددًا صحيحًا موجبًا n وسيطًا، وتُرجع رقم فيبوناتشي رقم n. تُعرَّف متتالية فيبوناتشي كما يلي:

  • fibonacci(1) = 0
  • fibonacci(2) = 1
  • fibonacci(n) = fibonacci(n-1) + fibonacci(n-2) عندما يكون n > 2.

مثال على الإدخال:

n = 6

مثال على الإخراج:

5

جرّب بنفسك

def fibonacci(n):
    # اكتب الكود هنا
quiz iconاختبر نفسك

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

جميع دروس المنطق وتدفق التنفيذ

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