Question

static int F(int n) { if (n < 1) return 1; else return 2*F(n-1)+n; } (a)...

static int F(int n) {

if (n < 1)

return 1;

else

return 2*F(n-1)+n;

}

(a) [7 points] Give the recurrence that describes the running time of F(int n).

(b) [8 points] Solve the recurrence equation from (a).

Note: For (b), you must show your work

Homework Answers

Answer #1

a) Let the function T(n) denote the number of elementary operations performed by the function call F(int n).

We identify two properties of T(n).

  • Since n<1 is computed using a fixed number of operations k1, T(1) = k1 (here n<1 value =1 base case)
  • If n > 1 the function will perform a fixed number of operations k2, and in addition, it will make a recursive call to F(n-1). This recursive call will perform T(n-1) operations. In total, we get T(n) = 2F(n-1)+n

b) Just looking at the recurrence we can guess that T(n) is something like 2n. we can verify that with first few values of T(n), we discover that they are each n less than a power of two.

It looks like T(n) = 2 n − n might be the right answer. Let’s check.

T(0) = 1 = 20− 0

ie T=1 so it satisfies

T(n) = 2T(n − 1) + n

= 2(2 n−1 − n) + n [induction hypothesis]

= 2 n − n [algebra]

hence solved

Know the answer?
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for?
Ask your own homework help question
Similar Questions
Define a recurrence F(n) for the code: int a(int i, int j){ if( j <= 1)...
Define a recurrence F(n) for the code: int a(int i, int j){ if( j <= 1) return i+20; else return j + a(i+10, j-3); } This recurrence I've come up with is F(n) = 2 if j <= 1 and F(n) = 2 + F(i+10, j-3). Now I need to solve this recurrence and represent it in big O notation which I'm unsure how to do. The main thing throwing me off is that there are two variables in the...
int algorithm ( int n ) {    if (n == 0)           return 1; else...
int algorithm ( int n ) {    if (n == 0)           return 1; else { return 2 * algorithm(n-1);    } }
Write a recursive method public static int sumEveryOther(int n) that takes a positive int as an...
Write a recursive method public static int sumEveryOther(int n) that takes a positive int as an argument and returns the sum of every other int from n down to 1. For example, the call sumEveryOther(10) should return 30, since 10 + 8 + 6 + 4 + 2 = 30. The call sumEveryOther(9) should return 25 since 9 + 7 + 5 + 3 + 1 = 25. Your method must use recursion.
Consider the following two methods: public static boolean isTrue(int n){        if(n%2 == 0)          ...
Consider the following two methods: public static boolean isTrue(int n){        if(n%2 == 0)           return true;        else           return false; } public static int Method(int[] numbers, int startIndex) { if(startIndex >= numbers.length)        return 0; if (isTrue(numbers[startIndex]))      return 1 + Method(numbers, startIndex + 1); else      return Method(numbers, startIndex + 1); } What is the final return value of Method() if it is called with the following parameters: numbers = {1, 2, 2, 3, 3,...
QUESTION 1 For the following recursive function, find f(5): int f(int n) { if (n ==...
QUESTION 1 For the following recursive function, find f(5): int f(int n) { if (n == 0)    return 0; else    return n * f(n - 1); } A. 120 B. 60 C. 1 D. 0 10 points    QUESTION 2 Which of the following statements could describe the general (recursive) case of a recursive algorithm? In the following recursive function, which line(s) represent the general (recursive) case? void PrintIt(int n ) // line 1 { // line 2...
Below is C code and Python code for an algorithm. C code: void foo( int n,...
Below is C code and Python code for an algorithm. C code: void foo( int n, int A, int B, int C ) { if( n==1 ) { printf("%d to %d\n",A,B); return; } foo( n-1, A, C, B ); printf("%d to %d\n",A,B); foo( n-1, B, C, A ); Python code: def foo(n , A, B, C): if n==1: print A, "to", B return foo(n-1, A, C, B) print A, "to", B foo(n-1, B, C, A) Let Hn be the number...
Consider the following recursive algorithm Algorithm S(n) if n==1 return 1 else return S(n-1) + n*n*n...
Consider the following recursive algorithm Algorithm S(n) if n==1 return 1 else return S(n-1) + n*n*n 1)What does this algorithm compute? 2) Set up and solve a recurrence relation for the number of times the algorithm's basic operation is executed. 3) How does this algorithm compare with the non-recusive algorithm for computing thius function in terms of time efficeincy and space effeciency?
Given the following function: int bar(int n) {     if( n < 0 )         return...
Given the following function: int bar(int n) {     if( n < 0 )         return -2;     else if (n <= 1)         return 2;     else       return (3 + bar(n-1) + bar(n-2)); } What is returned by bar (4)? Show all the steps
Write down the run time of the following recursive functions as a recurrence relation: int f(...
Write down the run time of the following recursive functions as a recurrence relation: int f( int n ) { if ( n <= 1 ) { return 1; } return f( n – 1 ) + f( n – 1 ); }
Translate the following C code into MIPS code. int test (int n) { if (n <...
Translate the following C code into MIPS code. int test (int n) { if (n < 2 ) return (10); else { k = 20 + test (n-1); k=k + n; return (k); } } Assume variable k is assigned to register $s1. Note: your code should be complete. please dont show me the software output,