1 Востаннє редагувалося vldkvll (20.02.2019 12:19:54)

Тема: Маю питання про рекурсію для новачків, бо сам є )

Як прога використовує другу рекурсію?
Python3

def generate(n, prefix = ''):
    if n == 0:
        print (prefix)
    else:
        generate(n-1, prefix + '0')
        generate(n-1, prefix + '1') # цей рядок?
generate(2)

тобто чому виконуєтся друга рекурсія саме в цьому порядку?
output:
00
01
10
11

Дякую за відповідь!

2 Востаннє редагувалося koala (20.02.2019 09:03:00)

Re: Маю питання про рекурсію для новачків, бо сам є )

Використовуйте тег code (кнопка <>). І як ви примудрилися пробіли вбити? Без них взагалі незрозуміло, що відбувається.
І спробуйте першою дією виводити, що там у вас викликається:

print('In generate(',n,',',repr(prefix),')')

може, так стане зрозуміліше

Подякували: leofun011

3

Re: Маю питання про рекурсію для новачків, бо сам є )

http://www.pythontutor.com/visualize.html

Подякували: leofun01, vldkvll2

4

Re: Маю питання про рекурсію для новачків, бо сам є )

дякую, так працую с цим ресурсом, але там теж не зрозуміло як саме в стекі все відбувається

5 Востаннє редагувалося volodymyrko (20.02.2019 14:58:37)

Re: Маю питання про рекурсію для новачків, бо сам є )

поки перша 

 generate(n-1, prefix + '0')

не відпрацює повністю (вона потім ще 2 рази запустить ф-цію запустить),
до тих пір наступний рядок

generate(n-1, prefix + '1') # цей рядок?

не почне викнаватися..
виконання ж послідовне