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

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

جزء من قسم Logic & Flow في رحلة Python على Coddy — الدرس 61 من 78.

عادةً ما تتكون الدوال العودية (Recursive functions) من جزأين:

  1. الحالة الأساسية (Base Case): تحدد متى يجب أن يتوقف التكرار العودي.
  2. الخطوة العودية (Recursive Step): تستدعي الدالة نفسها بمدخلات أصغر.

مثال: حساب المضروب (factorial) باستخدام العودية (recursion):

def factorial(n):
    if n == 1:  # الحالة الأساسية
        return 1
    return n * factorial(n - 1)  # استدعاء عودي

print(factorial(5))  # المخرجات: 120

هنا، تستمر الدالة في استدعاء نفسها بـ n - 1 حتى تصل إلى 1، حيث يتوقف التكرار (recursion).

مثال: عكس سلسلة نصية:

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

التحدي

سهل

اكتب دالة عودية (recursive function) تسمى fibonacci تأخذ عدداً صحيحاً موجباً n كوسيط (argument) وتعيد رقم فيبوناتشي النوني (nth Fibonacci number). يتم تعريف تسلسل فيبوناتشي كما يلي:

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

مثال للمدخلات:

n = 6

مثال للمخرجات:

5

ورقة مرجعية

تتكون الدوال العودية (Recursive functions) من جزأين أساسيين:

  1. الحالة الأساسية (Base Case): تحدد متى يجب أن يتوقف التكرار
  2. الخطوة العودية (Recursive Step): تستدعي الدالة نفسها بمدخلات أصغر

مثال المضروب (Factorial):

def factorial(n):
    if n == 1:  # الحالة الأساسية
        return 1
    return n * factorial(n - 1)  # استدعاء عودي

print(factorial(5))  # المخرج: 120

مثال عكس السلسلة النصية:

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

جرّب بنفسك

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

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

جميع دروس Logic & Flow