פייתון/פייתון גרסה 3/פונקציה רקורסיבית

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

פונקציה רקורסיבית היא פונקציה הקוראת לעצמה בתוך עצמה.

פונקציה n![עריכה]

הפונקציה הקלאסית להצגת רקורסיה היא פונקציה עצרת.

הפונקציה מקבלת מספר ומחזירה את ערכו בעצרת.

ניתן לייצר את פקודת עצרת באמצעות רקורסיה:

def factorial(num):
    if num == 0:
        return 1
    else:
        return num * factorial(num - 1)

נשם לב לפקודה האחרונה בפונקציה, הקוראת אל הפונקציה , , החזר את המספר שהוכנס כפול המספר במיקום ה-

כיצד התכנית תעבוד[עריכה]

עבור תכנס הפונקציה אל התנאי השני, תשמור את 5 ותפעיל שוב את הפונקציה עבור .

הפונקציה תכנס שוב אל התנאי השני, תשמור את 4 ותפעיל שוב את הפונקציה עבור הבא, שלוש.

הפונקציה תכנס שוב אל התנאי השני, תשמור את 3 ותפעיל שוב את הפונקציה עבור הבא, שתים.

הפונקציה תכנס שוב אל התנאי השני, תשמור את 2 ותפעיל שוב את הפונקציה עבור הבא, אחת.

הפונקציה תכנס שוב אל התנאי השני, תשמור את 1 ותפעיל שוב את הפונקציה עבור הבא, אפס.

הפונקציה תכנס אל התנאי הראשון תחזיר 1 ותחזור אחורה לערכי החזרה אותם היא זכרה.

היא תכפיל , תזכור את התוצאה, ותמשיך לעלות אל הפקודה הבאה , , עד שלבסוף תגיע אל

כפי שניתן להבין, התהליך הרקורסיה צורך זיכרון רב בתכנית.

מבנה פונקצית הרקורסיה[עריכה]

מבנה של פונקצית הרקורסיה דומה למבנה של אינדוקציה. קיימת פקודה שעוצרת את תהליך ההרצה. במקרה שלנו כאשר שמפסיקה את פעולת הרקורסיה.

אחריו else שקורא אל פקודת הרקורסיה.

קריאה נוספת[עריכה]