אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2023 · קיץ מועד א · שאלה 6כל שאלות המבחן ←
רקורסיהאלגוריתמים רקורסיביים

'מספר ראשוני' הוא מספר שהמתחלק רק בעצמו וב-1 (גם המספרים 1 ו-2 הם ראשוניים). לפניכם הפעולה החיצונית isPrime/IsPrime - אפשר להשתמש בפעולה בלי לממש אותה. חתימתה: Java - public static boolean isPrime (int num), C# - public static bool IsPrime (int num). הפעולה מחזירה true אם num הוא ראשוני, אחרת מחזירה false.

שלוש תוצאות אפשריות לתום addNodes(tr) עבור הערכים 5, 100, 100 (שתי אפשרויות שונות לפירוק 100).

tr(100)
├── 2
└── 50

tr(100)
├── 25
└── 4

tr(5)   (עלה, ללא בנים - כי 5 ראשוני)

עץ הפירוק המלא שמתקבל מהפעלת what/What על עלה עם ערך 150 (חלק ב, נגזר מהאלגוריתם הרקורסיבי הנתון).

150
├── 2
└── 75
    ├── 3
    └── 25
        ├── 5
        └── 5
סעיף א

ממשו את הפעולה החיצונית שלפניכם. הפעולה מקבלת צומת ללא בנים (עלה) שערכו גדול מ-0. אם ערך הצומת הוא מספר ראשוני, הפעולה מחזירה false. אחרת, הפעולה מוסיפה לצומת שני בנים שהמכפלה של ערכיהם שווה לערך הצומת המקורי, והערך של כל אחד מהם גדול מ-1. לאחר ההוספה הפעולה מחזירה true.

public static boolean addNodes (BinNode<Integer> tr)

סעיף ב

נתונה הפעולה החיצונית what/What שלפניכם (עוברת רקורסיבית: אם addNodes(tr) מחזירה true - קוראת לעצמה על tr.getLeft() ו-tr.getRight()). סרטטו את העץ כפי שייראה בתום הפעלת what/What עבור צומת tr - עלה ללא בנים - שערכו 150. יש להראות מעמיק.

סעיף ג

הסבירו מה מבצעת הפעולה what/What.

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי