16-01-2009, 18:55
|
|
|
חבר מתאריך: 08.07.05
הודעות: 144
|
|
ניתוח רקורסיה (כללי בלי קשר לשפה ספציפית)
אוקי במהלך לימודי ובדרכי להיות מתכנת נקלתי בדבר נורא מעצבן אבל לפעמים פותר חלומות הרקורסיה, קצת הסתבכתי עם זה (תנאי עצירה וכל זה) יש פה הגיון ענק שעומד מאחורי זה ולפעמים הוא לא ניתן להבנה רק ע"י חשיבה אז בשביל זה יש גם מעקבים וסירטוטים, לכן לא ממש הבנתי איך הולך המעקב הרקורסיבי .. אז יש לי שאלה ואני אשמח אם תוכלו לעזור לי להבין את המהלך.
אוקי אז הנה קוד להדגמה ב- JAVA (אני מניח שאפשר להבין בכל השפות, אין פה משהו מסובך)
קוד PHP:
public static void print(str) { if(str.length()==1) System.out.println(str); else { print(str.substring(0,str.length()-1); System.out.println(str); } }
והנה התמונה של המעקב,
[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://img149.imageshack.us/img149/7558/47033533fi1.jpg]
עכשיו לפי מה שהבנתי, יש פה קטע של מעקב "הלוך חזור" כלומר שהוא חוזר כל פעם לפונקציה כדי לחתוך אותה עד שהוא מגיע לתנאי עצירה (אם יש תו אחד).
עכשיו כשהוא מגיע לסוף הוא מדפיס בשורה
SOP(str)
את d ובשורה מעליו את da נכון ? פה בדיוק נתקעתי אני לא מבין איך המהלך הזה הולך, אם אני אמור לקרוא את העמודה של הפלט מלמעלה עד ללמטה או מלמטה עד ללמעלה ואם זה מלמטה ללמעלה אז איך אני אמור לדעת איזה ערך ה STR ? לפי מה שהוא קיבל למטה או לפי הפעולה שמשאל לו.
תודה לעונים
_____________________________________
|