פונקציות רקורסיביות חלק 2
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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):
# כתבו כאן קודהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
4יישום ספר אנשי קשר
הצגת התפריטהוספת איש קשר7קבוצות חלק 2
פעולות מתמטיות חלק 1פעולות מתמטיות חלק 2סיכום – חיפוש אוצרתת־קבוצות וקבוצות־עלמעבר על קבוצותסיכום – מעקב אחר טורניר8מנהל רישומי תלמידים
סקירת הפרויקטהוספת תלמיד11פונקציות מתקדמות
החזרת כמה ערכיםפונקציות Lambda חלק 1פונקציות Lambda חלק 2אתגר סיכום - מיון עם Lambdaפונקציות רקורסיביות חלק 1פונקציות רקורסיביות חלק 2סיכום - סכום של רשימה מקוננתתרגלו בעצמכם: קומפיילר Python אונליין