Prefix sums of a sequence of numbers $a_0,a_1,a_2,a_3\ldots$ are given by a second sequence of numbers $s_0,s_1,s_2,s_3\ldots$ defined as
$s_j = \sum_{i=1}^{j}a_i$
The Python code below computes prefix sums.
1 2 3 4 5 6 7 8 9 

Analyze the the code and find the line or lines that will be executed the greatest number of times.
The fragment of Java code below describes a recursive method $P$ that takes two integer parameters $x$ and $n$ and returns an integer.
1 2 3 4 5 6 7 8 9 10 11 12 13 

Analysis shows us that the running time of this function for large $n$ can be expressed as $T(n) = O(g(n))$ for some function $g(n)$. What is a valid function $g(n)$?
Details and assumptions
int
primitive type and assume the behavior of the method is not affected for large inputs.1 2 3 4 5 6 7 8 9 10 11 

Consider the recursive algorithm above, where the random(int n)
spends one unit of time to return a random integer which is evenly distributed within the range $[0,n]$. If the average processing time is $T(n)$, what is the value of $T(6)$?
Assume that all instructions other than the random cost a negligible amount of time.
The simple recursive python program below can be used to compute the $n^{th}$ Fibonnaci number.
1 2 3 4 5 

It can be shown that a tight bound of this program is given by $T(n) = \Theta(g(n))$ for some function $g(n)$. What family of functions is $g(n)$ in?
Details and assumptions
An obvious algorithm for exponentiation ($x^{n}$) takes $n1$ multiplications. Suppose we propose a faster algorithm for the case where $n=2^{m}$. The "BigO" complexity of such an algorithm can be expressed as:
$T(n)=O(g(n))$
Take the value of $g(n)$ for an arbitrary $n$. If we multiply $n$ by some constant $k$, how will the value of $g(n)$ most likely change?