递归地计算列表的长度

时间:2011-04-18 00:38:18

标签: python function recursion

如果你有一个列表= [1,2,3,4,5]

如何在不使用len(list)的情况下以递归方式计算该列表的长度?

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

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

不想使用len,只需在每次列表中存在值时添加1即可。我该怎么做?

2 个答案:

答案 0 :(得分:8)

>>> 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
>>> 

如果列表包含元素,则返回1 +列表长度减去一个元素。

你可以通过几种不同的方式做到这一点,但切片[:1]或[1:]将分别给你减去最后一个或第一个的元素,这是有道理的。

如果列表没有元素,则返回0

答案 1 :(得分:-1)

使用递归函数。

基本上再次调用该函数并将其返回的计数添加到结果中。重要的是确保在函数无关时退出(返回)。

查看这篇文章 Python recursion and return statements