Recursively decrement a list by 1

python, recursion

Solution

You can use only one argument, in my opinion it is simpler:

def recurseDecrMap(l):  
    if not l:  
        return []  
    else:
        return [l[0]-1] + recurseDecrMap(l[1:])

But as @jamylak pointed out, the complexity of this algorithm is O(N^2), since `l[1:]` creates a new list with references to the rest of the items in the list.

If you need efficiency, I'd recommend you using list comprehensions (Haidro's answer), but I suppose it is not a priority if you want it only for learning purposes.

Problem

Very quick and easy homework question. I have it running ok but I think there's a better way to do it. A more Pythonic way. Here's my code to recursively decrement each element of a list by 1. ``` l = range(30) def recurseDecrMap(l, x = []): if len(l) == 0: return [] else: x.append(l[0] -1) recurseDecrMap(l[1:], x) return x ``` So thanks for any input. I'm trying to learn to do better recursion. Having trouble getting the knack of it.

Original source

Related problems