Q3: Summation Write a recursive implementation of summation, which takes a positive integer n and a function term. It applies term to every number from 1 to n including n and returns the sum of the results. # Question 3 def summation(n, term) : ""Return the sum of the first n terms in the sequence defined by term. Implement using recursion! >>> summation(5, lambda x: x * x * x) # 1^3 + 2^3 + 3^3 + 4^3 + 5^3 225 >>> summation(9, lambda x: x + 1) # 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 54 >>> summation(5, lambda x: 2**x) # 241 + 2^2 + 2^3 + 2^4 + 245 62 >>> # Do not use while for loops!

Respuesta :

Answer:

Here is the recursive function summation:

def summation(n, term):      

   if n == 1:  

       return term(n)

   else:

       return term(n) + summation(n - 1, term)

Explanation:

The function summation() has two arguments where n is a positive integer and term is a function term. term has the lambda function which is a small function having an argument and an expression e.g lambda b: b+20

So the summation() function is a recursive function which returns sum of the first n terms in the sequence defined by term ( a lambda function).

If you want to check if this function works, you can call this function by passing values to it like given in the question.

summation(5, lambda x: 2**x)

Here the value of n is 5 and the term is a lambda function x: 2**x

If you want to see the results of this function on output screen then use:

print(summation(5, lambda x: 2**x))

The print() function will print the results on screen.

This returns the sum of first 5 terms in sequence defined in the function x: 2**x

In recursive methods there are two cases: base case and recursive case. Base case is the stopping case which means that the recursion will stop when the base case/ base condition evaluates to true. The recursive case is when the function keeps calling itself so the recursive function keepsexecuting until the base case becomes true.

Here the base case is if n == 1:  So the recursive function calling itself until the value of n becomes 1.  

Recursive case is:

       return term(n) + summation(n - 1, term)

For the above example with n= 5 and term = x:2**x the recursions starts from n and adds all the terms of the series one by one and the value of n keeps decrementing by 1 at every recursive call.

When the value of n is equal to 1 the base case gets true and the recursion ends and the result of the sum is displayed in output.

This is how the summation() function works for the above function call:

2^1 + 2^2 + 2^3 + 2^4 + 2^5

n is 5 So this term function is called recursively 5 times and at every recursive call its value decreases by 1. Here the term function is used to compute 2 raise to power n. So in first recursive call the 2 raise to the power 5 is computed, then 5 is decremented and then in second recursive call to summation(), 2 raise to the power 4 is calculated, in third recursive call  to summation(), 2 raise to the power 3 is calculated, in fourth recursive call  to summation(), 2 raise to the power 2 is calculated, in fifth recursive call  to summation(), 2 raise to the power 1 is calculated, then the base condition is reached as n==1. So the recursion stops and the sum of the above computed power function results is returned which is 62.

2^1 + 2^2 + 2^3 + 2^4 + 2^5 = 62

The screen shot of recursive function along with the output of explained examples is attached.

Ver imagen mahamnasir