Wpis z mikrobloga

Siemaneczko mirasy, przychodze do was z poniższym kodem, nawet printy eleganckie wstawilem wiem ze to lubicie
https://pastebin.com/ZfLgFsSQ
Kod jest rozwiazaniem zadania https://www.codewars.com/kata/5426d7a2c2c7784365000783
1. Jak widac w output, pierw kod dodaje nawiasy do sekwencji, lecz potem odejmuje (wyswietla sie print "jestem po ifach) oraz parametry n maleją. Czyli następuje jakby odwrotne dzialanie, mimo że nigdzie w funkcji nie mamy takiego dzialania aby od n1 czy n2 odejmowac 1. Wiec nie rozumiem skąd to

2. To łączy sie z 1 punktem, nie rozumiem na jakiej zasadzie kod po dodaniu pierwszej sekwencji do zbioru przechodzi do tworzenia nowej, ktora ma sie różnic od poprzedniej
#python #informatyka #naukaprogramowania
  • 9
@Tooca_rev: jako że masz sebcela w avatarze, to będę milutki

sformatuj to raz, a dwa to na spokojnie wytłumacz, co ma robić ta funkcja

przemyśl to sobie

@Tooca_rev: rekurencja, mordeczko. zanim dojdzie do pierwszego "po ifach", to masz wywołaną parę razy rekurencyjnie funkcję push_in. potem masz odwrotnie, bo schodzisz ze stacka wywołań
@zwei: "zanim dojdzie do pierwszego "po ifach", to masz wywołaną parę razy rekurencyjnie funkcję" - no to czaje wiem

"potem masz odwrotnie, bo schodzisz ze stacka wywołań " - tutaj zupelnie nie wiem o czym mowisz, moge sie domyslac na chlopski rozum ale wolalbym abys wyjasił, a jak nie to jak sebcel metoda grecka

#edt: wygogluje se
@Tooca_rev: jak wywołujesz push_in w środku push_in, to nie jest tak, że magicznie pierwszy nadal się wykonuje, tylko czeka na tego drugiego aż coś zwróci

w związku z tym masz call stack

push_in 1
push_in 2
push_in 3

no i każdy z nich zdąży wywołać print(przed ifami)

jak 3 już dalej nie będzie nic wywoływał, to wypisze print(po ifach)
ok, push_in 3 skończył, to zdejmujemy go z call stacka i wracamy
@zwei: rozumiem juz część, nie rozumiem jedynie dlaczego po dodaniu elementu (gdy parametry n1=2 oraz n2=2) dlaczego rekurencja dziala dalej
na logike rozkminiam ( i oczywiscie z moich printów dodatkowych( ͡° ͜ʖ ͡°)) to tak że wraz z call stack'iem funkcja zwraca wartosci zmiennych z początkowych stacków a nie koncowych, racja?