0:00 [Muzyka] W tym odcinku powiemy sobie o funkcjach funkcje są to fragmenty kodu które możemy wykorzystywać wiele razy funkcje będą realizować dla nas określone zadania No i oczywiście zaletą jest to że jak raz napiszemy zdefiniujemy funkcję to później możemy ją wykorzystać wiele razy dzięki temu nasz kod będzie też miał bardziej czytelną strukturę także też od strony struktury tutaj budowanie tworzenie wykorzystywanie ich ma duże znaczenie funkcje możemy sobie podzielić Czy wyróżnić możemy kilka rodzajów funkcji funkcje wbudowane to są te które państwo już znacie przynajmniej częściowo przykładem takiej funkcji wbudowanej chyba najbardziej popularne
0:46 jest Print no z niej korzystaliśmy już wielokrotnie Oczywiście tych funkcji wbudowanych jest więcej tutaj mamy widzimy że funkcję min która oblicza wartość minimalną tutaj widzimy mamy funkcję Max która oblicza wartość która tutaj jest do niej przekazana Czyli widzimy że tut mamy funkcj wywołanie funkcji zawsze wiąże się z tym że mamy tut Jakieś nawiasy no i w nawiasach może być ale nie musi coś przekazane tutaj akurat widzimy że przekazana jest ta lista Czyli widzimy że ta funkcja No to mówimy tutaj że coś ma zostać zrobione i jeżeli coś jest w środku przekazane to mówimy także z czym ma to coś być zrobion to co jest dla nas ważne będzie dzis ważne to jest to że funkc mogą być argumentem innych funkcji Czyli
1:32 to co jest w środku tutaj to jest argument i widzimy że tutaj mamy funkcję Print ale argumentem tej funkcji Print jest widzimy ABS jakaś wartość bezwzględna i argumentem tutaj tego ABS jest jeszcze round r No to jest oczywiście obl zaokrąglenie wartości Czyli to round przyjmuje dwa argumenty Pierwszym argumentem jest tutaj Ta liczba ten wynik tego działania Czy w 0,333 a Drugi argument wskazuje ile ma być miejsc po przecinku tutaj widzimy zaokrąglenie to do ilu miejsc po przecinku widzimy że tych miejsc po przecinku Ma być 10 i teraz to jest argumentem dla tej kolejnej funkcji to całe jest argumentem
2:18 dla tej kolejnej funkcji Czyli to co jest ważne to że właśnie argumentem inum że mam jakiś tutaj wynik to są funkcje wbudowane to znaczy że możemy je wywołać tak jak tutaj wywołaliśmy tą funkcję poprzez jej nazwę natomiast nie musieliśmy jej definiować drugim zagadnieniem jest czy drugim rodzajem funkcji są funkcje zdefiniowane przez użytkownika tutaj taki przykład funkcji zdefiniowanej przez użytkownika tutaj będziemy mieli definicję w tym miejscu widzimy że jest to funkcja która ma wprować tylko napis he Więc jakoś szczególnie niewiele robi nie za dużo robi No nie mniej jest to funkcja która działa i teraz jak
3:04 budujemy taką definicję funkcji Po pierwsze musi być słowo kluczowe def czyli mamy tutaj to słowo od którego musimy zacząć następnie mamy nazwę tej funkcji tutaj tworzymy nazwę widzimy że to będzie drukowanie mamy otwarty i zamknięty nawias to jest też konieczne i dwukropek dwukropek też jest konieczny i teraz jak tutaj zrobimy enter no to edytor przeniesie nas w to miejsce z tymi spacjami to wcięcie jest też konieczne żeby pokazać że jesteśmy FK tutaj już wychodzimy z tej funkcji dlatego że jesteśmy widzimy że tego wcięcia nie ma No i teraz żeby wywołać funkcję Oczywiście ona najpierw musi być zdefiniowana czyli to by musiało być Tak patrząc jak czyta to interpreter no to musiało być to u góry czyli musiało być to wcześniej W każdym razie ten
3:49 uruchomiony uruchomione te dwa wiersze No i możemy sobie to wywołać tutaj w tym miejscu i tak jak widzimy tak jak mówiłem ta funkcja możemy wielokrotnie jak już jest zdefiniowana została wykonana tutaj i mamy ten wynik Hej no i została wykonana drugi raz i mamy Znowu ten wynik Hej Czyli widzimy że mamy skorzystaliśmy z niej dwa razy a tutaj skorzystaliśmy z funkcji wbudowanej to widzimy że nie musimy tutaj tego definiować dlatego że to już jest to już jest zdefiniowane tylko wywołujemy czyli ten Print to jest coś takiego jakbyśmy tutaj mieli to w jakimś sensie tak jak mamy tutaj to drukowanie czyli to jest wywołanie po prostu funkcji tylko drukowanie To jest nasza funkcja a Print to jest funkcja wbudowana teraz no tutaj mamy taką
4:35 sytuację Że nic nie przekazujemy do tej funkcji czyli tutaj jest po prostu nic nie ma w tych nawiasach czyli to jest Nie jest zrób coś z czymś tylko po prostu zrób coś czyli Wydrukuj ten Print natomiast najczęściej chcemy powiedzieć zrób coś z czymś No i to coś z czym ma ta funkcja coś zrobić to jest w tym miejscu i tutaj to są parametry tutaj widzimy że funkcja przyjmuje nasza funkcja dodawanie która będzie dodawać dwie liczby przyjmuje parametr a i parametr b i teraz jeżeli chcemy wywołać taką funkcję tutaj są dwa parametry No to musimy te dwa parametry podać Czyli widzimy że tu jest te dwa argumenty w tym miejscu bo tu się w tym miejscu to się nazywa argumenty musimy podać i teraz argument ten tutaj 2 zostanie przypisany do tego a zgodnie z położeniem to jest pierwszy argument
5:21 który się pojawia więc do pierwszego parametru zostanie przypisany a TR zostanie przypisana do drugiego parametru czyli b czy tak jakbyśmy mieli tutaj teraz że A to jest 2 a b to jest 3 w takim układzie możemy sobie po prostu policzyć teraz sumę 2 plus 3 to wychodzi nam suma czyli 5 i mamy tutaj Return czyli Zwróć I teraz jeżeli mamy do zwracanie to znaczy że w tym miejscu zostanie podstawiona ta wartość która jest tutaj zwracana czyli tu wiemy że Zwróć piątkę czyli w tym miejscu zostanie podstawiona tak jakbyśmy w kodzie mieli wpisane tutaj 5 Czyli mamy teraz zapis taki C Rów 5 czyli stworzyliśmy zmienną Czyli taką zmienną możemy sobie wypow i ona jest w tym miejscu wypow czyli jeszcze raz są to
6:09 argumenty pozycyjne Dlaczego pozycyjne dlatego że ich kolejność będzie decydować o tym jak one będą tutaj traktowane Czyli że dwójka jest pierwsza i a jest pierwsze No to argument 2 zostanie przypisany do parametru a czyli a w zasadzie teraz będzie dwójką tak Czyli tutaj możemy Jak piszemy a plus b to piszemy tak jakby 2 plus coś no tutaj coś to jest to TR tutaj wstawia się jeszcze dosyć często coś takiego właśnie taki doing czyli jest to napis który będzie nas informował taka dokumentacja funkcji która będzie nas informować o tym co ta funkcja robi tutaj akurat funkcja oblicza sumę dwóch liczb zdarza się tak czasami że tworzymy funkcję ale ta funkcja jeszcze nie ma na tym etapie niczego robić w takim układzie czyli
6:56 wiemy że tu będzie jakaś funkcja już ją sobie definiować i już ją wywołujemy ale jeszcze nie chcemy żeby to działało bo jeszcze nie wiemy dokładnie jak ona będzie wyglądać w takim układzie tutaj nie mogłoby nic jakby tutaj było nic byśmy nie wstawili po tym dwukropku no to ona po prostu interpreter zwróciłby nam błąd w związku z pozy coś trzeba wstawić i to co się tutaj wstawia w to miejsce to jest pas pas to znaczy że jest jest to takie słowo kluczowe które po prostu wskazuje na to że coś tu w przyszłości najprawdopodobniej będzie ale jeszcze na tą chwilę tego nie mamy to są oczywiście też argumenty pozycyjne bo widzimy że tutaj jedynka będzie a a dwójka będzie b ale ona oczywiście ta funkcja na razie jakbyśmy to puścili to po prostu Tutaj się nic nie stanie poza tymi argumentami pozycyjnymi mogą być
7:41 też argumenty domyślne takim argumentem domyślnym jest tutaj widzimy to b Co to znaczy to znaczy że jeżeli Drugi argument nie zostanie podany czyli w tym miejscu wywołujemy funkcję jeżeli nie zostanie podany Drugi argument tak jak teraz już jest podany ale jeżeli nie zostanie podany to b będzie równało się 10 czyli ta funkcja robi no ta funkcja dodaje a do b a zostaje tutaj przekazane czyli A jest teraz dwójką czyli 2 + b b nie jest podane więc domyślnie zostanie wstawiany 10 czyli 10 No to będzie 12 i co my tutaj jeszcze próbujemy zrobić próbujemy czyli to 12 to jest to co tutaj mamy w tej funkcji co się stało czyli wydrukowane zostało to 12 ale jeszcze próbujemy przypisać tutaj tą wartość do zmiennej
8:29 suma tak jak to zrobiliśmy w tym miejscu to przypisanie do C I w tym tym razem to nie wyjdzie tutaj widzimy że mamy wartość Nan czyli to nam nie wyszło dlaczego nam to nie wyszło No dlatego że nie mamy tutaj właśnie ten tego Return czyli to Return sprawia że to zostaje podstawione w to miejsce Jeżeli tego nie ma tak jak tutaj mamy tylko Print No to tutaj nic się nie da podstawić dlatego ostatecznie mamy że suma No wskazuje na nic tak moglibyśmy powiedzieć w końcu możemy też mówić o argumentach nazwanych Zobaczmy jak one wyglądają czyli tutaj mamy funkcję która nam wyświetli Cześć imię nazwisko taki napis natomiast argumenty nazwane to są takie że mamy mamy po prostu podane te parametry nazwę tych parametrów i dzięki temu
9:15 kolejność już nie jest istotna czyli w pozycyjnych była istotna kolejność a tutaj w tych nazwanych kolejność nie jest istotna Co to znaczy jak jasno tutaj wskazuje wprost że chodzi o nazwisko nazwisko jest drugie ale mogę je podać pierwsze dlatego że mówię że to jest parametr nazwisko czyli w takim układzie jeżeli podajemy nazwy są to argumenty nazwane to kolejność po prostu ich nie ma znaczenia gdybym skasował to i tutaj skasował to czy nie Nie podawał bym tych nazw tych parametrów wtedy po prostu ten argument ryba zostałby potraktowany jako jako imię bo jest po prostu pierwszy gdy nie wiemy ile będzie argumentów możemy skorzystać z takiego tak zwanego unpacking operator Czyli takiego operatora rozpakowania którym jest gwiazdka czyli w tym przypadku
10:01 widzimy że ja tutaj akurat przekazałem do tej funkcji trzy imiona ale mogą być C czy pi czy S nie wiem ile ich będzie do końca wiem że będzie no na przykład kilka ale nie wiem dokładnie ile w związku z powyższym mogę to przekazać w ten sposób że jest gwiazdka i właśnie imiona jeżeli to przekażę w ten sposób to ten tutaj te trzy napisy zostaną przekształcone w krotk czyli zobaczmy jak to działa Czyli Print Type to widzimy że to jest krotka Czyli mamy No i możemy to wprować to widzimy że to jest krotka w takim układzie oczywiście aby dostać się do każdego z nich mogę zastosować funkcję for i tutaj jeszcze jest metoda która zwiększy nam pierwszą powiększy nam pierwszą literę na wielką że tak powiem czyli w ten sposób mogłem właśnie
10:49 dojść do każdego tego imienia mimo że nie wiedziałem ile ich będzie I rzeczywiście wyświetliły się za pomocą tej funkcji for poszczegól te napisy tak jak tak jak powiedzmy chciałem czyli tutaj jeżeli nie wiemy ile ich będzie to możemy zastosować gwiazdkę wtedy z tego nam się tworzy krotka i później działamy już tak jakbyśmy mieli po prostu kotkę No i możemy się dostać do poszczególnych elementów właśnie między innymi za pomocą tutaj ten pętli for Gdyby była taka sytuacja że lista którą przekazuję jeszcze taki inny przypadek to jest lista która składa się z list czyli jest tutaj lista która się nazywa i ona składa się z jednej listy i później składa się z drugiej listy No to jeżeli
11:34 byśmy sobie po prostu tak samo do tego podeszli tutaj tutaj akurat bez tej gwiazdki ale jeżeli byśmy starali się wykorzystać tutaj for to zauważmy że jedna pętla for No dojdzie nam tutaj do tego miejsca do tej głębokości czyli czyli pokaże nam tutaj po prostu te elementy składowe tej głównej listy natomiast Gdybyśmy chcieli rzeczywiście dojść do tych elementów które są zagnieżdżone w tych dwóch listach No to dojście do do poszczególnych tych wartości wymagałoby oczywiście użycia zagnieżdżonej pętli czyli tutaj widzimy że najpierw dochodzimy przy tym pierwszym poziomie do tego że zostaną złapane dwa a później przy tym drugim poziomie pętli że zostanie złapany ten pojedynczy No i oczywiście wtedy możemy sobie wyświetlić to w ten sposób
12:19 oczywiście argument który ma być przekazany do funkcji Można oczywiście także wpisać samodzielnie że tak powiem poprzez funkcję Czyli jeżeli ja wstawię tutaj teraz tutaj za ten input na przykład wstawimy sobie powiedzmy 3 No to zostanie to rzeczywiście rzeczywiście wykonane tak Czyli tutaj mogę wstawić ten sposób 5 ale mogę sobie oczywiście wstawić tut input no i ten input zostaje wtedy tutaj przekazany do tej funkcji i to były funkcje nazwane noie są nazwy tutaj nazwa ocena tutaj jest nazwa a tu jest nazwa powiedzmy osoby tak Czyli to są nazwy tych funkcji natomiast
13:05 często nie ma potrzeby tworzyć nazwy głównie wtedy kiedy chcemy z funkcji skorzystać tylko jeden raz bo mówiłem że z funkcji Korzystamy wiele razy rzeczywiście jest taka możliwość ale często jeżeli chcemy skorzystać tylko jeden raz i ona jest bardzo prosta to korzystamy z innego wyrażenia mianowicie z wyrażenia lambda i ta funkcja lambda wygląda tak jak tutaj jest to przedstawione widzimy w takiej formie skrótowej to musi być Czyli już nie możemy tak definiowali sobie w dowolną liczbę linijek tylko musi to być jedna linijka I co robi ta funkcja ta funkcja robi dokładnie to samo co tutaj ta funkcja nazwana czyli Zobaczmy co robi ta funkcja nazwana ta funkcja nazwana dodaje 10 Czyli widzimy że mamy funkcja która nazywa się Dodaj 10 przekazujemy dwójkę jako argument tutaj to staje się tym parametrem to a
13:52 rów 10 rów 2 teraz 2+ 10 to jest 12 czyli w miejce podstawione 12 i wypruje 12 No to będzie wypr inowe Zobaczmy to będzie wypr inowe 12 i to jesteśmy w tym miejscu natomiast to wyrażenie robi to samo to znaczy bierze jakieś a i do tego a tutaj po dwukropku co ma się stać to do tego a dodaje 10 czyli ona robi to samo i teoretycznie moglibyśmy zrobić w ten sposób że to przypisujemy sobie do jakiejś do jakiegoś identyfikatora i wtedy można to wywołać wielokrotnie to znaczy tak jak robiliśmy to ze zwykłą funkcją natomiast no to jakby nie jest zalecane bo jeżeli mamy wielokrotnie wywołać jakąś funkcję to wtedy po prostu ją nazywamy i odwołujemy się do niej po
14:37 nazwie więc to rzeczywiście zadziała No tu widzimy że mamy wypow jak przekażemy dwójkę za to a no to i tutaj ten X wskażemy ten identyfikator No to rzeczywiście wyjdzie nam to samo czyli 12 możemy wprować później przypisy sobie y i powiedzmy pi [Muzyka] tutaj jeszcze raz i będziemy mieli 15 No bo teraz 5+ 10 to jest 15 Czyli znowu się odwołujemy do tej do tej naszej lambdy natomiast no tego typu działania nie jest jakby zalecane tylko jeżeli wielokrotnie chcemy się do niej odnosić to stosujemy tego typu nazwane funkcje natomiast no to to jest to samo to samo
15:23 Jak widzimy jeżeli chodzi o działanie to samo co co to natomiast pamiętamy że woim argumencie mieć inną funkcję no i wtedy właśnie to wykorzystanie tej lambdy zaczyna mieć znaczenie czyli mamy tutaj lambdę która widzimy że przyjmuje dwie wartości czy która ma parametry mn i co ona z nimi robi m dzii przez n czyli mamy 1 PR 3 1 prz 3 to będzie 033 i miej po pru będzie 10 dlatego że już jest Drugi argument To jest właśnie ta tutaj to co wyjdzie z tego czyli tutaj mamy przekazujemy funkcję A tutaj mamy już tą wartość ile ma być miejs po przecinku czyli 10 Czyli
16:08 widzimy że w takim układzie możemy sobie to wykorzystać że po prostu przekażemy lambdę jako jako argument No i zobaczmy jeszcze taki przypadek widzimy co ta funkcja zrobi czyli podajemy tutaj co ta funkcja lambda ma zrobić ma po prostu pierwszą literkę małą zamienić na wielką Czyli widzimy jak to działa Dzięki tutaj tej metodzie Natomiast możemy to zrobić w ten sposób że teraz jak rozumiemy jak to działa to jak to działa to możemy sobie to wykorzystać tutaj w tym miejscu czyli tworzymy funkcję jest to funkcja wyższego rzędu która przyjmuje dwa argumenty ale tym argumentem pierwszym jest ten argument pierwszy jest wskazany tu tym argumentem pierwszym jest właśnie ta funkcja lambda
16:54 czyli lambda zostaj wstawiona tutaj jako właśnie to lam tak żeby No i imię to jest Drugi argument Drugim argumentem jest tutaj i teraz widzimy że mamy imię równa się i teraz mamy lam No to lam to co to będzie No to znaczy że Skorzystaj z tej funkcji co ona robi No ona powiększa pierwszą literę ale z czego No z tego tutaj napisu który został tutaj podany jako imię czyli w ten sposób widzimy to zastosowanie tej funkcji wykorzystana jest tutaj tylko już teraz raz odwołujemy się do niej raz ia po Prost rzędu jako argument czyli w ten sposób tutaj widzimy że to zastosowanie takiej funkcji rzeczywiście może mieć może mieć sens Może widzimy że tut na jakie
17:40 większą klasę zastosowań następnie przechodzimy do zagadnienia to jest zakres czyli Zastanawiamy się w jakim obszarze dana zmienna będzie widoczna czyli Zobaczmy sobie tutaj taką sytuację mamy zmienna zewnętrzna iamy zmienna Jest napisana wewnątrz tutaj jest zmienna globalna a tutaj jest zmienna lokalna czyli zmienna lokalna będzie on możemy ją wykorzystać Ale to co z nią zrobimy będzie tylko związane tutaj z tą funkcją Czyli jeżeli to teraz sobie puścimy to zobaczmy że ta zmienna która została tutaj zwrócona i tutaj wydrukowana to jest wewnątrz czyli czyli
18:26 to zostaje tutaj ta lokalna wydrukowana czyli ona jest widoczna na tym lokalnym lokalnym poziomie natomiast jak wrócimy do wyru po prostu zmienna bo tutaj jest to wyprucie ona jest cały czas zewnętrzna dlatego że tutaj ten z tego lokalnego poziomu nie mamy dostępu żeby tutaj zmienić coś w tym w tym poziomie globalnym oczywiście moglibyśmy tut zrobić przypisanie to znaczy że to Drukuj w nawiasach byśmy zrobili zmienna równa się druku w nawiasach no to wtedy nadpis byśmy tutaj to niemniej tutaj w tym obszarze widzimy że tutaj coś się dzieje lokalnie No to lokalnie widzimy że jest jakiś wynik on został zwrócony możemy sobie zobaczyć lokalnie co to
19:12 było ale globalnie tutaj ta zmienna globalna No ona nie uległa zmianie i teraz jak te one są poszukiwane że tak powiem w poszczególnych funkcjach te te zmienne to tutaj jest ta reguła b czyli mamy widzimy że najpierw funkcja szuka lokalnie Czyli widzimy że tutaj no ta wewnętrzna funkcja bo to są dwie funkcje zewnętrzna i wewnętrzna ta wewnętrzna ma tutaj odwołanie do liczby Liczba to jest jakaś zmienna No i teraz to próbujemy to podnieść do kwadratu i wprować No to teraz sprawdzamy sobie tak No to gdzie gdzie będzie szukana ta wartość najpierw Ona będzie szukana w tym miejscu to znaczy to znaczy ona będzie szukana najpierw lokalnie jeżeli
19:59 nie zostanie tutaj znaleziona A tu nie mamy bo nie mamy Nigdzie że liczba równa się coś to zostanie szukana będzie szukana w tym miejscu czy tutaj będzie jakaś liczba podana bo tu jakby było tak jak tutaj podpowiada nam Google kap No to byłoby wtedy odniesienie do tej ale nie mamy tego wartości więc tutaj też nie ma Czyli tutaj nie ma w tej funkcji nadrzędnej W związku z powyższym może jest jakaś funkcja może jest jakaś globalna zmienna No i jest ta globalna zmienna w tym miejscu więc dopiero w takim układzie zostan wzięta stąd ale gdyby tu gdzieś się pojawiło wcześniej liczba równa 5 to nie brały tutaj tej d tylko wzięły sobie tą piątkę może być jeszcze ta wbudowana jakaś to w tym wbudowanym jest na przykład Print to znaczy nigdzie nie jest zdefiniowanie
20:44 ani globalnie ani lokalnie Co to jest Print więc zostanie wykorzystane co zostanie wykorzystane to funkcja wbudowana jaką jest właśnie ten ten Print czyli jakby poszukiwanie tego co to jest liczba jest od środka idzie tak od środka Natomiast tutaj też trzeba pamiętać o tym że jeżeli jest jakaś wartość globalna A coś się dzieje lokalnie No to to po prostu będzie się działo lokalnie ale ta zmienna tutaj nie zostanie nadpisana czyli lokalnie zmienna to jest wewnętrznie ale globalnie zmienna zostaje cały czas zewnętrzna ostatnie zagadnienie które dzisiaj poruszymy to jest rekursja nazywana także rekurencję czyli jest to wywołanie funkcji przez samą siebie czyli funkcja wywołuje samą siebie wykorzystujemy właśnie taką
21:32 rekursji różnych sytuacjach między innymi wtedy kiedy chcemy uruchomić jakiś algorytm powiedzmy algorytm który dzieli jakieś dane albo algorytm który sortuje jakieś dane wtedy dosyć często odnosimy się właśnie do takiego działania opartego na rekursji czy właśnie rekurencji czyli odwoływaniu się funkcji do samej siebie Zobaczmy króciutko jak to mniej więcej wygląda mamy tutaj zdefiniowaną funkcję inkrementacja inkrementacja to znaczy do 1 widzimy że wywołana jest tutaj funkcja w tym miejscu czyli wywołujemy ją zerem i teraz będziemy tutaj przechwytywać tego naszego X który tutaj podany zostanie czyli najpierw x jest równe 0 czyli x zostanie wskazany tutaj Tu są jakieś
22:17 operacje ale w pewnym momencie może się tak zdarzyć że dochodzimy właśnie do tego miejsca to miejsce to jest inkrementacja czyli to jest znowu nazwa tej funkcji czyli ta funkcja która jest wykonywana stąd uruchamia się znowu i wracamy w to miejsce tutaj widzimy że jest podany znowu argument tym argumentem jest x plus 1 więc zobaczmy jak to mniej więcej Działa Czyli na początku jest 0 czyli pod x zostaje podstawione 0 No tutaj zostanie wyświetlone to zer następnie to jest sprawdzone czy X czyli czy to 0 Rów 5 No nie czyli tutaj mamy false związku z powyższym nie zostanie zwrócony ten tutaj nie przejdziemy tutaj do w to miejsce gdzie mamy to właśnie i to wyrażenie po prostu zakończy nam działanie tego naszego programu Czy
23:03 działanie tej funkcji Przechodzimy sobie tutaj do tego Elsa no i w Elsie mamy wywołanie znowu tej samej funkcji Czyli znowu mamy powrót do tej funkcji która jest która jest tutaj natomiast widzimy że tutaj zmienia się ten argument jest x plus 1 było 0 Czyli teraz 0 plus 1 to jest 1 czyli tutaj mogliśmy powiedzieć że teraz jest 1 czyli co to znaczy to znaczy że x staje się J No i wyświet znowu JN sprawdzone zostanie to nie więc jedynka jest teraz xem 1 plus 1 to jest 2 i Wracamy tutaj I to jest teraz x jest teraz dwójką czyli przypomina to pętle while tylko widzimy że tutaj No właśnie ta inkrementacja ta cała funkcja w zasadzie ma przedstawiać tą inkrementacji ale właśnie ta inkrementacja Troszeczkę inaczej wygląda
23:48 bo tam byłoby gdzieś napisane że x rów x + 1 albo x+ rów 1 tak żeby zwiększać sobie ten iterator natomiast z argument ale ten argument nie przypisujemy go tak jakby x rów x + 1 czy coś takiego z tego względu że jak tutaj x jest 0 no plus 1 to jest 1 i wracamy tutaj to jest teraz 1 czyli tutaj to przypisanie następuje jakby w tym w tym miejscu a zwiększenie następuje w tym w tym miejscu No i w końcu aż dojdzie do piątki to sobie zobaczmy jak to działa aż w końcu dojdzie do piątki no i przy piątce No mamy tutaj już zakończenie bo wchodzimy w to miejsce i to kończy działanie tej funkcji tak że takie działania rekurencyjne czy taka rekursja jest wykorzystana w różnego rodzaju algorytmach no i warto też mniej więcej
24:35 znać jak to wygląda widzimy że no można było to samo zrobić za pomocą właśnie jakiś pę while czy for ale można to zrobić też w obrębie samej funkcji ta funkcja wywołuje w tym miejscu wywołuje samą siebie Jeżeli oczywiście ta głębokość do której tutaj która jest tutaj gdzieś określona ta głębokość jest określona w tym miejscu No jeżeli ten warunek tutaj nie zosta nie został spełniony i tu jest jeszcze wyświetlona ta głębokość rekursji z tego względu że ta funkcja nie może wywoływać samej siebie w nieskończoność O ile dobrze pamiętam w pythonie to jest 1000 także można sobie to wygooglować ewentualnie to jest 1000 takich odwołań czyli moglibyśmy wejść wywołać coraz głębiej coraz głębiej wchodzić w tą funkcję 1000 1000 razy Czyli tutaj tak jak mieliśmy w pętlach w czy for że może to być pętla
25:21 nieskończona No tutaj takiej nieskończonej do takiej nieskończonej nie dojdziemy z tego względu że ona w końcu się przerwie z tego powodu że no właśnie nie może zagłębiać się w nieskończoność czyli to jest rekursja i ostatnia zagadnienie jeszcze a nie ostatnie zagadnienie Nie bo to już było ostatnie zagadnienie W związku z powyższym jeśli chodzi o te kwestie podstawowe związane z funkcjami to byłoby wszystko Także dziękuję bardzo i do zobaczenia