janemayers
New member
חיבור בינארי של M מספרים
מייצגים מונה בייצוג בינארי, בתור רשימה מקושרת של ביטים, מהביט הפחות סיגניפיקנטי לביט הסיגניפיקנטי ביותר. למשל, המספר 5 ייצוג ע"י הרשימה 1->0->1 הפעולה PLUS(N) מקבלת מספר טבעי N, שמיוצג אף הוא ע"י רשימת ביטים,כנ"ל, ומגדילה את המונה ב-N. ממש את הפעולה ומצא את זמן הריצה של M פעולות. הערה: בכל אחת מ-M הפעולות אפשר לבחור N שונה כרצוננו. האלגוריתם שחשבתי עליו הוא לעבור על שתי הרשימות במקביל עד שאחת מהן נגמרת, ולעדכן את המונה לפי הצורך (כששומרים תמיד עוד ביט זיכרון שנגרר הלאה לפעולת החיבור הבאה). כשאחת הרשימות נגמרת ממשיכים עם השנייה ובסוף - כשתתיהן נגמרו - מקסימום מוסיפים עוד איבר עם 1 אם ביט הזיכרון אינו מאופס. 1. האם נשמע לכם נכון? 2. יש לי קושי בניתוח זמן הריצה...
מייצגים מונה בייצוג בינארי, בתור רשימה מקושרת של ביטים, מהביט הפחות סיגניפיקנטי לביט הסיגניפיקנטי ביותר. למשל, המספר 5 ייצוג ע"י הרשימה 1->0->1 הפעולה PLUS(N) מקבלת מספר טבעי N, שמיוצג אף הוא ע"י רשימת ביטים,כנ"ל, ומגדילה את המונה ב-N. ממש את הפעולה ומצא את זמן הריצה של M פעולות. הערה: בכל אחת מ-M הפעולות אפשר לבחור N שונה כרצוננו. האלגוריתם שחשבתי עליו הוא לעבור על שתי הרשימות במקביל עד שאחת מהן נגמרת, ולעדכן את המונה לפי הצורך (כששומרים תמיד עוד ביט זיכרון שנגרר הלאה לפעולת החיבור הבאה). כשאחת הרשימות נגמרת ממשיכים עם השנייה ובסוף - כשתתיהן נגמרו - מקסימום מוסיפים עוד איבר עם 1 אם ביט הזיכרון אינו מאופס. 1. האם נשמע לכם נכון? 2. יש לי קושי בניתוח זמן הריצה...