Reputation: 761
I'm practicing for an exam and trying to figure this out. I'm just not exactly what to do with the add method. This is what I have so far:
class recursion:
def __init__(self, lst=[]):
self.lst = lst
def add(self, x, y):
return x + y
def recurs(self):
if len(self.lst) == 1:
return lst[0]
else:
return self.lst[0].add(self.recurs(lst[1:])
Upvotes: 0
Views: 182
Reputation: 8548
it's recursion way to do this, but more clean:
it uses pop method from list
class rec(object):
def __init__(self):
self.sum = 0
def recur(self, list):
if len(list) > 0:
self.sum += list.pop()
self.recur(list)
else:
return self.sum
using:
>>> from code import rec
>>> a = rec()
>>> b = [1,2,3]
>>> print a.recur(b)
6
Upvotes: 1
Reputation: 8548
another way to get sum of the list without recursion, but more faster and effective:
>>> a = [1,2,3]
>>> sum(a)
6
>>>
Upvotes: 0
Reputation: 7333
Assuming you're trying to recursively get the sum of the list:
Essentially, recursive_sum_helper
keeps calling itself with smaller lists:
sum(1, 2, 3, 4) = 1+sum(2,3,4) = 1+( 2 + sum(3,4) ) = ...
class recursive_summer:
def __init__(self, lst=[]):
self.lst = lst
def recursive_sum(self):
return self.recursive_sum_helper(self.lst)
def recursive_sum_helper(self, a_lst):
if len(a_lst) == 1:
return a_lst[0]
else:
first_element = a_lst[0]
list_without_first_element = a_lst[1:]
return first_element + self.recursive_sum_helper( list_without_first_element )
r = recursive_summer([1,2,3,4])
r.recursive_sum()
The output is 10.
Hope this helps with whatever problem you're trying to solve.
Upvotes: 4