Найти - Пользователи
Полная версия: Рекурсивная функция
Начало » Python для новичков » Рекурсивная функция
1
Luca_Brasi
Совершенно случайно читая книгу Лутца заметил, что функция может вызывать сама себя. Вникнул в это новшество и осознал что это то, чего мне давно не хватало. Начал эксперементировать. Решил обойти рекурсивный список.
a1=['a11',['a2',['a31','a32',['a41','a42']]],'a52'] 
    a=[a1]
    def forvard(elem):
        if isinstance(elem,list):
            for x in elem:
                if isinstance(x,list) == False:
                    print(x)
                forvard(x)
    forvard(a)
Изначально я использовал без инструкции if. Результат - я превышал допустимую глубину… Это что получается, данной инструкции if хватает для выхода из функции?
py.user.next
Luca_Brasi
Вникнул в это новшество
Этому новшеству лет 50, если не больше.
В программировании она с лиспа началась.
doza_and
Luca_Brasi
я превышал допустимую глубину…
for i in 'a':
print(i)
a
Элементами строки являются строки из одной буквы. Каждую строку из одной буквы тоже можно итерировать и получить туже самую букву. И так до бесконечности.

Это следствие архитектурного решения что в питоне нет элементарного типа буква.
Luca_Brasi
меня еще один момент интересует.
a1=[11,[2,[31,32]]]
    a=a1
    def forvard(elem):
        #import pdb; pdb.set_trace()
        if isinstance(elem,(list,tuple)):
            for x in elem:
                print('Это массив  ', elem)
                if isinstance(x,(list,tuple))==False:
                    print(x)                
                forvard(x)
    forvard(a)
Выхлоп примерно такой.
Это массив (11, (2, (31, 32)))
11
Это массив (11, (2, (31, 32)))
…..
Откуда береться еще последняя строка “Это массив (11, (2, (31, 32)))”?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB