פורסם 2010 בינואר 3015 שנים שלום. בקטע קוד שצירפתי למטה , יש לי בעיה , שלא ברור לי מה הפעולה מחזירה בצורה הרקורסיבית. למשל אם ניקח את העץ הזה: אז הוא בודק שהצומת הראשונה מפנה למשהו , ואז עושה אותו פעולה על החלק השמאלי ועל החלק הימיני של העץ וכו'.. הבעיה שאם לדוגמא בעץ הוא התחיל ב-8 ואז -3 ואז 8 , עכשיו בחזור מה הוא מחזיר בדיוק? 0 ואז מה? מן הסתם שהוא מחזיר 1 בכל פעם אבל לא הבנתי למה ואיך... תודה מראש [attachment deleted by admin]
פורסם 2010 בינואר 3015 שנים הקוד שצירפת סופר כמה קודקודים יש בעץ.הוא בעצם אומר: אם העץ ריק אז יש לו 0 קודקודים.אם העץ לא ריק - אז כמות הקודקודים בו היא:כמות הקודקודים בתת העץ הימני ועודכמות הקודקודים בתת העץ השמאליועוד 1 בשביל הקודקוד עצמו.בדרך הלוך המספרים גדולים בגלל הוספת ה-1 עבור הקודקוד עצמו ובדרך חזור אתה מכסם את כל ה-1 שאספת.אם זה עדיין לא מובן תגיד ואפרט יותר.
פורסם 2010 בינואר 3015 שנים מחבר על פי מה שאני מבין - זה פשוט לא נכון. ה+1 נעשה פעם אחת רק בסוף - אני טועה? אשמח אם עוד מישהו יכול לאמת את דבריו של Armageddon26 , אם הם נכונים או לא
פורסם 2010 בינואר 3015 שנים ארמגדון צודק...בשביל לתפוס את סדר הפעולות תנסה לעשות סימולציה בראש על עץ עם שני בנים בלבד - נניח העץ הקיים כשהשורש הוא 8 ויש לו רק שני בנים - (3-) השמאלי , ו-20 הימני וזהו.אם זה עדיין לא מסתדר לך אני יכתוב לך את הסימולציה.
פורסם 2010 בינואר 3115 שנים לא, הוא אמור להחזיר את מספר הnodes שבעץאין לך מושג ברקורסיה האאיך הגעת בכלל לעצים, כשאת הרקורסיה הכי פשוטה בעולם אתה לא יודע לנטר
פורסם 2010 בינואר 3115 שנים תראה exzt, רקורסיה באופן כללי רצה עד תנאי עצירה מסוים, בלי קשר כרגע לעצים.בכל פעם היא קוראת לעצמה כאשר היא זוכרת את הערכים מהרצות קודמות שלה.במקרה הזה תנאי העצירה הוא קבלת עץ ריק כקלט וזה בעצם מה שנבדק בשורה הראשונה של הפונקציה.בפעם הראשונה שהיא פועלת היא מקבלת את השורש 8.מתבצעת בדיקה האם הקלט ריק - תשובה שלילית (הרי הוא הצומת שמכיל את 8 ).כעת מוחזר הערך של תוצאת הרצת הפונקציה על הבן השמאלי של 8 שזה 3- ועוד התוצאה של הרצה על הבן הימני שזה 20, ועוד 1 בלי קשר לשאר התוצאות.מה שקורה כרגע זה שבזכרון נשמר 1 ואליו יתווסף הפלט העתידי של הרצת הפונקציה על 20 ועל 3-.בוא נניח שהעץ שלנו היה רק שלושת הצמתים הראשונים האלה.הפונקצייה רצה על 20. מכיוון שאין לו בנים, הרצת הפונקצייה על הבן הימני (שאינו קיים) תחזיר 0 וכנ"ל עבור הבן השמאלי. כלומר השורה האחרונה תחזיר 0+0+1.בדיוק באותו אופן הרצה על 3- תחזיר 1.עכשיו בזכרון עדיין קיים 1 שצריך להוסיף כשהפונקצייה רצה על 8.סה"כ תקבל 1+1+1=3.באותו אופן אתה יכול להרחיב את הרעיון הזה לעץ גדול יותר...
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.