PDA

צפה בגרסה המלאה : רקורסיה



orelg111
30-07-2014, 15:31
בס"ד
לא כ"כ הבנתי את הנושא הזה .
אשמח לפתיח הסבר קצר .
ולעזרה בשאלה הנ"ל :

http://sites.huji.ac.il/science/unit4_2007/Java/chap4-Recursion-java.pdf
עמוד בספר 92
למטה יש שם סימן שאלה
תודה מראש

noyyyyyyy
30-07-2014, 15:38
זה חומר של 5 יחידות מחשבים?

orelg111
30-07-2014, 15:38
כן
לשנה הבאה
התחלתי ללמוד
כי שמעתי שיחידה ב קשה
ואין מצב שאני מוציא בה ציון נמוך!

noyyyyyyy
30-07-2014, 15:46
אני מתלבטת בכלל אם להמשיך כי י עשיתי בינתיים שלוש יחידות ונשאר לי את ה-2 יחידות האחרונות כדי לסיים עם 5, גם לי אמרו שזה קשה יותר....
תוכל לשלוח לי חומר כדי שאראה מה קורה שם (:

orelg111
30-07-2014, 16:10
אני מתלבטת בכלל אם להמשיך כי י עשיתי בינתיים שלוש יחידות ונשאר לי את ה-2 יחידות האחרונות כדי לסיים עם 5, גם לי אמרו שזה קשה יותר....
תוכל לשלוח לי חומר כדי שאראה מה קורה שם (:

לגבייך יש לי בכיתה עוד כאלה מהמתלבטים
יש לי מורה באמת תותח והוא אמר ככה :
מיש יש לו ציון גבוה מ 85 סופי בשלוש יחידות ויש לו מוטיבציה עדיף לו להמשיך
ומי שלא עדיף שלא ..
הנה הקיושר לחצי מהחומר ..
והחלרק השני הוא כבר בחירה אישית של המורה שלך
אנחנו עושים מודלים חישוביים .
http://sites.huji.ac.il/science/unit4_2007/Java/JAVA-BOOK.htm

noyyyyyyy
30-07-2014, 16:15
גם המורה שלנו תותחית על, ויש לי מעל 85 בשלוש יחידות אבל סתם אם זה שווה את המאמץ שלי כי שנה הבאה זו שנה עמוסה בבגרויות... אצלנו לפחות

- - - - - - הודעה נוספת - - - - - -

ותודה על החומר (:

orelg111
30-07-2014, 16:16
אצלנו לא .
שווה את ההשקעה .
קיצר מישו עוזר ?
יצא לי 7 לא יודע אם זה נכון..

antigravity
30-07-2014, 16:36
יוצא 7, אין כאן שום דבר חוץ מלעקוב אחרי הקוד הפשוט (יותר נוח להתחיל מלמצוא את n=1 ואז את n=2).

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

orelg111
30-07-2014, 16:42
אני אגיד לך מה לא הבנתי .
ברגע שאני מפעיל פעולה ויש לי משתנה נגיד SUM בהפעלת פעולה בזימון רקורסיבי זה לא אותו משתנה נכון?

antigravity
30-07-2014, 16:49
אכן, אתה יכול לחשוב על זה כשלושה "הקשרים" בלתי-תלויים ביניהם:
כשאתה קורא ל-MysticSum(3) נוצר לו "הקשר" עם sum משלו, וכשהוא קורא ל-MysticSum(1), MysticSum(2) לכל אחד מהם יהיה "הקשר" משלו עם sum משלו. אף אחד מההקשרים לא מודע לאחרים.

זה בדוגמה שהבאת. אם sum היה משתנה גלובלי אז כל ההקשרים היו רואים את אותו משתנה sum.
(משתנים גלובלים נחשבים למנהג תכנותי רע.)

orelg111
30-07-2014, 16:51
הבנתי ..
קצת מסובך כל העסק .
המלצות כלשהן ?
איך עוקבים אחרי קוד רקורסיבי ..

shmu407
30-07-2014, 16:56
https://www.youtube.com/watch?v=-_gITGC4epc

antigravity
30-07-2014, 18:15
כבר רשמתי את ההמלצות שלי.
בין היתר:
1. השיטה הכי נוחה היא לעקוב אחר כל הקשר בנפרד. (פשוט כשאתה פותר על דף, כשאתה קופץ להקשר אחר (כלומר קריאה רקורסיבית), תקצה לו מקום אחר על הדף ותמשיך משם. אח"כ כשיהיה return תחזור למקום בדף של ההקשר המקורי. מקווה שזה מובן.)
למשל תשים לב שבמהלך הקריאה לפונקציה הנתונה ייווצרו 4 הקשרים (במקרה של הפונקציה הנתונה זאת לא השיטה הכי יעילה לחישוב, כמו שתראה בסעיף הבא).
2. בפונקציות כמו בשאלה שלך די פשוט לפתור קודם עבור n=1,2 אתה ישר תדע את MysticSum(1), MysticSum(2) וזה ירגיש לך כאילו אתה עוקב אחרי לולאה רגילה (כמובן שבשיטה הזו כדאי להתחיל מ-n=1, כדאי שכשתחשב את n=2 כבר יהיה לך מראש את MysticSum(1)).
3. תחפש חומר באנגלית באינטרנט ותפתור תרגילים, לאט לאט הנושא יהפוך לפשוט יותר.
הצצתי בתרגילי אתגר בלינק שהבאת והם מצוינים (אחרי התרגילים הרגילים).

orelg111
30-07-2014, 22:00
כבר רשמתי את ההמלצות שלי.
בין היתר:
1. השיטה הכי נוחה היא לעקוב אחר כל הקשר בנפרד. (פשוט כשאתה פותר על דף, כשאתה קופץ להקשר אחר (כלומר קריאה רקורסיבית), תקצה לו מקום אחר על הדף ותמשיך משם. אח"כ כשיהיה return תחזור למקום בדף של ההקשר המקורי. מקווה שזה מובן.)
למשל תשים לב שבמהלך הקריאה לפונקציה הנתונה ייווצרו 4 הקשרים (במקרה של הפונקציה הנתונה זאת לא השיטה הכי יעילה לחישוב, כמו שתראה בסעיף הבא).
2. בפונקציות כמו בשאלה שלך די פשוט לפתור קודם עבור n=1,2 אתה ישר תדע את MysticSum(1), MysticSum(2) וזה ירגיש לך כאילו אתה עוקב אחרי לולאה רגילה (כמובן שבשיטה הזו כדאי להתחיל מ-n=1, כדאי שכשתחשב את n=2 כבר יהיה לך מראש את MysticSum(1)).
3. תחפש חומר באנגלית באינטרנט ותפתור תרגילים, לאט לאט הנושא יהפוך לפשוט יותר.
הצצתי בתרגילי אתגר בלינק שהבאת והם מצוינים (אחרי התרגילים הרגילים).
סבבה אחי תודה
אני פשוט לומד לבד לקראת שנה הבאה .
אני בטוח שזה יבוא עם הזמן
במיוחד כשנלמד בכיתה יחד עם המורה
תודה רבה :)

סתם שאלה מודלים זה קשה ?
מה נחשב הכי קשה במדעי המחשב ב ?