איקס עיגול - לולאה רקורסיבית

היי,

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

אשמח אם אוכל לשלוח את הקוד ולקבל עזרה.

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

יכול לעזור אם הקריאה של הפונקציה לעצמה תעשה כמה שיותר קרוב לסוף - לאסוף איזה משתנה לפי כל מקרה, ושהפונקציה תקרא לעצמה רק בסוף - זה עוזר לראות מה קורה (למרות שאני מודה שאני דווקא במקרה הזה לא עשיתי את זה, כיוון שקראתי לפונקציה שוב אך ורק במקרה אחד, וכבר ידעתי מה עלולה להיות הבעיה בהתחשב בדיון הנ’ל)

לייק 1

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

2 לייקים

תודה ! זאת הייתה הבעיה. @koby

לייק 1

מילה במילה, במיוחד הפסקה השנייה :slight_smile:

לייק 1

למדנו על רקורסיה??? מתי?

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

בגדול רקורסיה היא טכניקה שנתנו לה שם. היא לא שום דבר חדש או מיוחד, אלא פשוט מעין מדבקת־שם, או שם חיבה אם תרצו, ל"פונקציה שקוראת לעצמה".
יש אינסוף טכניקות ומונחים במדמ"ח, ומפאת זמן, בהירות ונגישות, אי אפשר (ולא כדאי) לציין את כולם כשבאים להעביר קורס.
יש אנשים שזה אינטואיטיבי להם, יש אנשים שזה פחות. יש אנשים שלוקח להם שנים להבין את הרעיון עד הסוף (היי). אני לא חושב שזו יכולת שמתכנת מתחיל לא יכול בלעדיה, ואני כן חושב שבתור התחלה עדיף לנו להתמקד בדברים אחרים :slight_smile:
אני מקווה שיהיה זמן ספייר בקורס ותהיה לנו ההזדמנות להעביר שיעור גם על רקורסיות.

2 לייקים

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

בעיני הדיונים הנ’ל מעניינים ועזרו לי להבין הרבה (גם לא רק בשביל להשתמש ברקורוסיות).

מכיר את הדיון שם, אני התחלתי אותו…:wink:

לייק 1