16/10/2009
עיצוב תוכנה
מבחן ראשון,רקורסיה
- משך המבחן :שני שיעורים
- כל חומר עזר מותר בשימוש
- יש לענות על 4 שאלות (בעלי תוספת זמן לענות על 3 שאלות) שאלה 5 חובה לכולם.
- בכל שאלה יש לנסח טענת כניסה ויציאה ואת הזימון לפעולה – 10% מהציון
- הוכיחו את פתרונכם בכל דרך שתבחרו – 10% מהציון
שאלה 1 :
כתבו פעולה רקורסיבית המקבלת שלם חיובי n ומדפיסה משולש של כוכביות כך:
*
***
*****
בדוגמא זו n=3 .
שאלה 2:
נתונה סידרה חשבונית:2,4,6,8,10,… שבה האיבר הראשון 2 וההפרש בין כל שני איברים עוקבים 2.
כתבו פעולה רקורסיבית המקבלת שלם n חיובי המקיים n>=1 המייצג איבר מספר n בסידרה.
הפעולה מחזירה את ערכו של איבר זה.
שאלה 3 :
נתון מערך של שלמים באורך כלשהוא.כתבו פעולה רקורסיבית המדפיסה את תוכן איברי המערך :
א . פעם ראשונה לפי הסדר
ב . פעם שנייה בסדר הפוך.
לדוגמא : אם המערך הוא : 1,2,3 a: יש להדפיס באותה הפעולה שתי שורות אלה:
1,2,3
3,2,1
שאלה 4:
כתבו פעולה רקורסיבית המונה כמה פעמים מופיע ערך x במערך נתון.
שאלה 5 :
int sumofn = sidrasum.Sidra(5); נתון הזימון:
וכן הפעולה:
public int Sidra(int n)
{
int sum;
if (n == 1)
{
sum = 1;
return sum;
}
else if (n == 2)
{
sum = 2 + Sidra(n - 1);
return sum;
}
else
{
sum = Sidra(n - 1);
return sum + Sidra(n - 1);
}
}
א . מהיא הסידרה?
ב . מה מבצעת הפעולה?
בהצלחה