פורסם 2008 בינואר 2117 שנים נתנו לי את השיטה הבאה: public static boolean what (Node n){ if (n == null) return true; if (n.getLeftSon()==null && n.getRightSon()==null) return true; if (n.getRightSon()==null) return (n.getNumber() % n.getLeftSon().getNumber() == 0) && what (n.getLeftSon()); if (n.getLeftSon()==null) return (n.getNumber() % n.getRightSon().getNumber() == 0) && what (n.getRightSon()); return (n.getNumber() % n.getLeftSon().getNumber() == 0) && (n.getNumber() % n.getRightSon().getNumber() == 0) && what (n.getLeftSon()) && what (n.getLeftSon());} וה- Node שלה די פשוט והוא: public class Node{ private int _number; private Node _leftSon, _rightSon; public Node (int number) { _number = number; _leftSon = null; _rightSon = null; } public int getNumber() {return _number;} public Node getLeftSon() {return _leftSon; } public Node getRightSon() {return _rightSon; } public void setNumber(int number) {_number = number; } public void setLeftSon(Node node) {_leftSon = node; } public void setRightSon(Node node) {_rightSon = node; }} אני לא ממש מצליח לתפוס את השיטה what() כי היא די טריקית והיא גם רקורסיבית מה שמקשה על ההבנה... אני יודע שזה לא ממש משהו הגיוני מבחינת חשיבות מה שהיא עושה, אבל ההשערה שלי היא שאולי היא מוצאת כמה עלים יש להם את הערך 0 ורושמת את מספר העלים הללו... מישהו יכול לעזור לי לראות מה היא עושה ? תודה !
פורסם 2008 בינואר 2117 שנים מחבר איזה שטויות אני מדבר ... היא הרי מחזירה רק true או false... לפי השורות: if (n.getLeftSon() == null && n.getRightSon() ==null)return true; אני למד כי כאשר הוא מזהה עלה בוודאות הוא יחזיר true אבל... לא ככ הבנתי מה הוא עושה במקרה של שורש...
פורסם 2008 בינואר 2117 שנים אתה יודע מה המשמעות של הביטוי הזה?n.getNumber() % n.getLeftSon().getNumber() == 0
פורסם 2008 בינואר 2117 שנים מחבר אומר: קח את המספר הנוכחי וחלקו בבן השמאלי, ובדוק האם התוצאה שווה ל-0.
פורסם 2008 בינואר 2117 שנים מחבר ברור ברור התכוונתי לשארית.... אומר: קח את המספר הנוכחי (האב) ובדוק האם הוא מתחלק בבן השמאלי ללא שארית. אבל מה התוכנית כולה עושה ?
פורסם 2008 בינואר 2117 שנים עכשיו תאמר לי מה זה עושה:(n.getNumber() % n.getLeftSon().getNumber() == 0) && what (n.getLeftSon())
פורסם 2008 בינואר 2117 שנים מחבר אומר: קח את המספר הנוכחי (האב) ובדוק האם הוא מתחלק בבן השמאלי ללא שארית, וגם בבן הימני ללא שארית ? :
פורסם 2008 בינואר 2117 שנים אולי כדאי שתנסה לצייר כמה עצים שונים שיחזירו לך true בסיום הפעולה, ואז תראה מה מיוחד בערכים של העצים...
פורסם 2008 בינואר 2117 שנים מחבר צודק לא יודע איפה ראיתי RightSon...רגע ... יכול להיות שהתוכנית מחזירה true אם כל אב יכול להתחלק בכל אחד מהבנים שלו, ו- false אם אפילו אחד מהאבותאינו יכול להתחלק בשני בניו ?
פורסם 2008 בינואר 2117 שנים בדיוק (אגב, נראה לי שיש שגיאה בסוף של הפונקציה - יש שם פעמיים getLeftSon במקום פעם אחת getLeftSon ופעם אחת getRightSon)
פורסם 2008 בינואר 2117 שנים מחבר אתה צודק באמת יש שגיאה...עכשיו.. אם אני לוקח נניח את העץ המצ"ב אז אני אקבל בעצם false נכון ? כי אין לי אבות מושלמים.אגב אם יש לי אב עם בן אחד רק (לא משנה ימני \ שמאלי) אבל הוא יכול להתחלק בו ללא שארית אז אני אקבל true עדיין או שהוא ייתן false בגלל שאין לי 2 בנים?[attachment deleted by admin]
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.