Menu
Coddy logo textTech

פונקציות רקורסיביות חלק 2

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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 אונליין