calculate length of list recursively

2020-05-07 03:51发布

问题:

If you have a list = [1,2,3,4,5]

how would you recursively calculate the length of that list without using len(list)?

myarray = [1,2,3,4,5]

def mylist(myarray):
    if (myarray == []):
        print ("The list is empty")
        return 
    return 1 + ?

Don't want to use len but just add 1 each time there exists a value in list. How would I do that?

回答1:

>>> def list_length(L):
...     if L:
...         return 1 + list_length(L[1:])
...     return 0
... 
>>> list_length(myarray)
5
>>> list_length([])
0
>>> list_length([1]*4)
4
>>> 

If the list has elements, return 1 + the length of the list minus one element.

You can do this a couple different ways, but slicing [:1] or [1:] will give you the elements minus the last or first respectively, makes sense.

If the list has no elements, return 0



回答2:

Use a recursive function.

Basically call the function again and add the count returned by it to the result. Important thing is to make sure you exit (return) when the function has nothing to do.

Check out this post Python recursion and return statements