$ $

Recurrences

Counting Activation Records

Counting Operations

Analyzing Recursive Algorithms: Stage 1

Warm-up Exercise

Develop a recurrence that describes the number of multiplication operations performed by the following code block:

public static int fun(int n) {
        if (n == 0) {
            return 5;
        } else {
            int sum = 1;
            for (int i = 0; i < 4; i++) {
                sum *= 2;
            }
            return sum * fun(n - 1);
        }
    }
}

\(T(0) = ??\)

\(T(n) = ??\)

Warm-up Exercise

public static int fun(int n) {
        if (n == 0) {
            return 5;
        } else {
            int sum = 1;
            for (int i = 0; i < 4; i++) {
                sum *= 2; // Four here.
            }
            return sum * fun(n - 1); // One here.
        }
    }
}

\(T(0) = \color{orange}{0}\)

\(T(n) = \color{red}{5} + \color{green}{T(n-1)}\)

Another Exercise

Write a recurrence relation that describes the number of additions performed by this method.

   public static int fun1(int n) {
        if (n == 0) {
            return 20;
        } else {
            
            int result = 2 * n;

            return result - (fun(n - 1) + fun(n - 1));
        }
    }

Part 2: Solving the Recurrence

Next time...