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

Főoldal » Középiskola » Informatika
437
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.
programozás, python
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