→ חזרה לעמוד הקודם
// תרגול

תרגול רקורסיה בסיסי

מבני נתונים · 899271רקורסיה

תרגיל 1

עקבי אחר הפונקציה הבאה עבור הקריאה: Secret1(4)

public static int Secret1(int n)
{
    if (n == 0)
        return 0;
    return n + Secret1(n - 1);
}
  • מהו ערך ה־n בכל קריאה?
  • מהו תנאי העצירה?
  • מהו הערך המוחזר הסופי?

תרגיל 2

עקבי אחר הפונקציה הבאה עבור הקריאה: Secret2("H-E-L-L-O")

public static void Secret2(string s)
{
    if (s.Length == 0)
        return;

    Console.Write(s[s.Length - 1]);
    Secret2(s.Substring(0, s.Length - 1));
}

נקודה למחשבה: שימי לב מתי מתבצעת הדפסת התו - לפני או אחרי הקריאה הרקורסיבית?

מה יהיה הפלט שיוצג על המסך בסיום?

תרגיל 3

נתון המערך: int[] numbers = {2, 4, 6};

עקבי אחר הפונקציה עבור הקריאה: Secret3(numbers, 0)

public static int Secret3(int[] arr, int i)
{
    if (i == arr.Length)
        return 1;
    return arr[i] * Secret3(arr, i + 1);
}
  • רשמי את "שרשרת" המכפלות שנוצרת.
  • מה קורה כאשר האינדקס i מגיע לאורך המערך?

תרגיל 4

הקריאה: Secret4(123)

public static int Secret4(int n)
{
    if (n < 10)
        return 1;
    return 1 + Secret4(n / 10);
}

מה הפעולה הזו "סופרת" בפועל לגבי המספר n?

תרגיל 5

עקבי אחר הפונקציה הבאה עבור הקריאה: Secret5(2, 5)

public static int Secret5(int baseNum, int exp)
{
    if (exp == 0)
        return 1;
    return baseNum * Secret5(baseNum, exp - 1);
}
  • כמה קריאות פונקציה יתבצעו בסך הכל?
  • מהו ערך ההחזרה עבור הקריאה הנ"ל?

תרגיל 6

עקבי אחר הפונקציה הבאה עבור הקריאה: Secret6(3)

public static void Secret6(int n)
{
    if (n <= 0) return;
    Console.Write(n);
    Secret6(n - 1);
    Console.Write(n);
}

שימי לב: יש כאן הדפסה גם לפני וגם אחרי הקריאה הרקורסיבית.

מה יהיה הפלט המדויק על המסך?

דף תרגול זה נוצר לשימוש לימודי | בהצלחה!

הורדת הקובץ המקוריPDF · תרגול רקורסיה בסיסי