Menu
CoddyTech
flag Ar iconالعربيةdown icon

الدوال التكرارية - الجزء الثاني

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

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

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

مضروب n هو n * (n - 1) * ... * 1، لذا فإن مضروب n يساوي n مضروبًا في مضروب n - 1:

func factorial(n: int) -> int:
	if n == 1: # الحالة الأساسية
		return 1
	return n * factorial(n - 1) # الخطوة التكرارية

يستدعي factorial(5) الدالة factorial(4)، التي تستدعي factorial(3)، وصولًا إلى factorial(1)، التي تُرجع 1. وفي طريق العودة، تضرب كل استدعاءة: الناتج هو 120.

ليس من الضروري أن يكون الإدخال الأصغر عددًا أصغر. يكفي أيضًا أن تكون السلسلة أقصر. تعكس هذه الدالة سلسلةً نصية:

func reverse_text(text: String) -> String:
	if text.length() <= 1: # الحالة الأساسية
		return text
	return reverse_text(text.substr(1)) + text[0]

‏text.substr(1) هي السلسلة النصية من دون محرفها الأول. تعكس الدالة تلك السلسلة الأقصر وتضيف المحرف الأول في النهاية. السلسلة النصية المكوّنة من صفر أو محرف واحد تكون معكوسة بالفعل، لذا فهي الحالة الأساسية.

print(reverse_text("hello"))
olleh
challenge icon

التحدي

سهل

اكتب دالة تكرارية باسم fibonacci تأخذ عددًا صحيحًا موجبًا n وتُرجع العدد n من متتالية فيبوناتشي:

  • fibonacci(1) تساوي 0
  • fibonacci(2) تساوي 1
  • عندما تكون n > 2، تكون fibonacci(n) هي fibonacci(n - 1) + fibonacci(n - 2)

على سبيل المثال، تُرجع fibonacci(6) القيمة 5 (تبدأ المتتالية هكذا: 0، 1، 1، 2، 3، 5).

تستدعي الاختبارات fibonacci() بنفسها. لا تستدعها، ولا تطبع أي شيء.

جرّب بنفسك

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

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

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

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