Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

Python feladat

368
Sziasztok! A rekúziót tanuljuk, szoval a függvény visszahívását saját magába. Viszont van itt egy feladat. Megoldva! De egyszerűen nem tudom megérteni hogy miért ezt a számot kapom. Valaki tudna segíteni hogy mi is történik itt? Előre is köszönöm.
Jelenleg 1 felhasználó nézi ezt a kérdést.
python, programozás
0
Középiskola / Informatika

Válaszok

1
Szia!

A rekúrzió függvények ahogy te is írtad az amikor valamit önmagában meghatározunk. Ez lényegében azt jelenti hogy a függvény folyamatosan önmagát hívja meg.
Nézzük meg a programot (Én a sorok elejére beírtam a sorok sorszámát hogy könnyebb legyen magyarázni :))

1. def negyzetszam (n): //Itt a függvény megkap egy számot.
2. if (n>=1): //Itt a függvény megnézi hogy a megadott szám nagyobb egyenlő-e 1-el. Ha igaz akkor megy tovább a 3. sorra, ha nem akkor ugrik a 8. sorra.
3. if (n==1): // Itt megnézi hogy a kapott szám egyenlő-e egyel ha igen akkor 1-et fog visszaadni a függvény.
4. return 1 // Ahogy az előző kommentben leírtam, itt visszaad a program 1-et
5. else: //Ide akkor lép a program ha a 3. sor nem volt igaz rá, azaz a szám nem egyenlő 1-el.
6. return (n**2+negyzetszam(n-1)) //Itt a függvény visszaadja a szám négyzetét, majd hozzáadja az újrahívott függvény n-1-edik értékét.
7. else: //Ide akkor lép be a függvény ha a 2. sor nem teljesült, a megadott érték kisebb mint 1.
8. return None // ha a 7. sor teljesül akkor a függvény nem ad már vissza értéket.

9. print(negyzetszam(10)) //Ezek meg a kiiratások :D
10. print(negyzetszam(1)) //Ezek meg a kiiratások :D
11. print(negyzetszam(5)) //Ezek meg a kiiratások :D


na most lényegében ami történik a függvényben az az hogy megkap egy értéket, és ha ez az érték nagyobb mint 1 akkor négyzetszámra emeli, majd meghívja a függvényt ismét de a számból kivon egyet. Ezzel a kapott értékkel is lefut és ha nagyobb mint 1 akkor ismét négyzetre emeli, hozzáadja az előző számhoz és ismét meghívja a függvényt. Ez az egész folyamat addig megy amíg a szám el nem éri az 1-et.


vegyük példának az 5-öt.

a függvény megkapja az 5-öt
négyzetre emeli = 25
majd kivon az 5-ből 1-et (4) és újra meghívja a függvényt amit hozzáad a 25-höz.
megvizsgálja a 4-et majd négyzetre emeli =25+16
a program kivon a 4-ből 1-et (3) és újra meghívja a függvényt amit hozzáad az előző számokhoz.
megvizsgálja a 3-at majd négyzetre emeli =25+16+9
a program kivon a 3-ból 1-et (2) és újra meghívja a függvényt amit hozzáad az előző számokhoz.
megvizsgálja a 2-t majd négyzetre emeli =25+16+9+4
a program kivon a 2-ből 1-et (1) és újra meghívja a függvényt amit hozzáad az előző számokhoz.
megvizsgálja az 1et és teljesül végre a harmadik sor azaz n==1
végül a szám amit összeszámolt a program a következő:
25+16+9+4+1=55

Lehet hogy nemsikerült érthetően elmagyaráznom ez esetben nyugodtan szólj és megpróbálom máshogy is elmagyarázni de ez az oldal segíthet még a megértésében:
https://hu.wiki-base.com/7780886-python-recursion

Szép napot! :)
0