2 תשובות
בעייתי להסביר בצורה מפורטת שתהיה מובנת אבל יש לך שאלה לדוגמה?
שתדע שהצ'אט מאוד טוב בלהסביר את הדברים האלה. אבל אכתוב הסבר משלי כאן.

רקורסיה זה רעיון אלגוריתמי ולכן הוא לא קשור לשפת התכנות הספציפית שאתה משתמש בה. זה גישה כללית של פתרון בעייה על ידי חלוקה שלה לתתי בעיות ובסוף חיבור של תתי הבעיות. ברקורסיות יש לך גם מקרה בסיס שהוא המופע הפשוט ביותר של בעייה ולכן עבורו הפונקצייה מחזירה את הערך מיידית.

הדוגמה הקלאסית שכנראה הראו לך בכיתה היא הפעולה החשבונית עצרת. אציג פתרון רקורסיבי שלה. אני בא ואומר לך שאני יודע לחשב כמה זה 1 עצרת = 1. אבל אם תבוא אלי עם ערך כלשהו שונה מאחד n, אני אדע לחשב כמה זה n! אם באורח פלא תהיה לי תשובה לכמה זה (n-1)!. כי מתמטית n! = n*!(n-1). אז ברגע שתהיה לי את התשובה עבור n-1, אכפיל אותה ב-n ואחזיר את התשובה.

או בפסודו-קוד (מוזמן עצמאית להמיר אותו ל-c#):
factorial(n):
if n==1 return 1.

else:
return n*factorial(n-1)


עבור הדוגמה שלנו:

בסיס הרקורסה - n=1
קריאה רקורסיבית - לחשב עבור n-1
שימוש בפתרון הרקורסיבי - הכפלה ב-n