вычислить длину списка рекурсивно - PullRequest
0 голосов
/ 18 апреля 2011

Если у вас есть список = [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 ]

8 голосов
/ 18 апреля 2011
>>> 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

0 голосов
/ 18 апреля 2011

Используйте рекурсивную функцию.

По сути, снова вызовите функцию и добавьте возвращаемое ею количество к результату.Важно убедиться, что вы выходите (возвращаетесь), когда функция не имеет ничего общего.

Ознакомьтесь с этим постом Реконструкция Python и операторы возврата

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...