Rekurssio
Rekursio on ohjelmointitekniikka, jossa funktio kutsuu itseään ratkaistakseen ongelman pienemmissä osissa. Se on erityisen hyödyllinen ongelmissa, joissa on toistuva rakenne tai luonnollisia osatehtäviä.
Rekursion keskeiset osat ovat:
- Perustapaus: ehto, joka pysäyttää rekursion;
- Rekursiivinen tapaus: osa, jossa funktio kutsuu itseään yksinkertaisemmalla syötteellä.
Miksi käyttää rekursiota?
Jotkin ongelmat voidaan luontevasti ilmaista pienempien osatehtävien avulla. Rekursio tarjoaa selkeän ja elegantin tavan ratkaista nämä antamalla funktion kutsua itseään käsittelemään yksinkertaisempia tapauksia. Sitä käytetään yleisesti tehtävissä, kuten puiden käsittelyssä, polkujen tutkimisessa tai rakenteiden (esim. listat, merkkijonot) pilkkomisessa.
1234567def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case # Function call print_message("Hello, Recursion!", 3)
Käydään askel askeleelta läpi, miten tämä rekursiivinen ohjelma toimii:
- Ehtotarkistus: jos
times > 0
, funktio jatkaa. Tässä tapauksessatimes = 3
, joten ehto on tosi; - Viestin tulostus: funktio tulostaa
"Hello, Recursion!"
; - Rekursiivinen kutsu: funktio kutsuu itseään arvolla
times - 1
; - Toisto: tämä prosessi jatkuu, kunnes
times
on 0; - Päättyminen: kun ehto
times > 0
ei enää täyty, rekursio päättyy ja ohjelma suorittuu loppuun.
Tulos: Viesti "Hello, Recursion!"
tulostetaan kolme kertaa.
Suorituksen kulku:
Joka kerta, kun funktio kutsuu itseään, se lisää uuden kehyksen kutsupinoon (muistirakenne, joka seuraa aktiivisia funktiokutsuja). Funktio jatkaa itseään pienemmällä times
-arvolla. Kun perusehto (times == 0
) saavutetaan, suoritus pysähtyy. Tämän jälkeen jokainen aiempi kutsu valmistuu yksi kerrallaan käänteisessä järjestyksessä. Tämä takaisinpäin eteneminen on olennainen osa rekursion toimintaa.
Swipe to start coding
Annettuna merkkijono, joka edustaa puhelinnumeroa ja saattaa sisältää välilyöntejä, viivoja, sulkuja tai muita ei-numeerisia merkkejä. Tavoitteena on poimia vain numerot rekursion avulla.
- Jos syötemerkkijono
number
on tyhjä, palautetaan tyhjä merkkijono. - Tarkista, onko merkkijonon
number
ensimmäinen merkki numero käyttämälläisdigit()
-metodiaif
-ehdossa. - Jos se on numero, yhdistä se rekursiivisen kutsun tulokseen funktiolle
format_phone_number
, välittäen alimerkkijono alkaen toisesta merkistä. - Jos se ei ole numero, tee rekursiivinen kutsu funktiolle
format_phone_number
, ohittaen ensimmäinen merkki.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 4.35
Rekurssio
Pyyhkäise näyttääksesi valikon
Rekursio on ohjelmointitekniikka, jossa funktio kutsuu itseään ratkaistakseen ongelman pienemmissä osissa. Se on erityisen hyödyllinen ongelmissa, joissa on toistuva rakenne tai luonnollisia osatehtäviä.
Rekursion keskeiset osat ovat:
- Perustapaus: ehto, joka pysäyttää rekursion;
- Rekursiivinen tapaus: osa, jossa funktio kutsuu itseään yksinkertaisemmalla syötteellä.
Miksi käyttää rekursiota?
Jotkin ongelmat voidaan luontevasti ilmaista pienempien osatehtävien avulla. Rekursio tarjoaa selkeän ja elegantin tavan ratkaista nämä antamalla funktion kutsua itseään käsittelemään yksinkertaisempia tapauksia. Sitä käytetään yleisesti tehtävissä, kuten puiden käsittelyssä, polkujen tutkimisessa tai rakenteiden (esim. listat, merkkijonot) pilkkomisessa.
1234567def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case # Function call print_message("Hello, Recursion!", 3)
Käydään askel askeleelta läpi, miten tämä rekursiivinen ohjelma toimii:
- Ehtotarkistus: jos
times > 0
, funktio jatkaa. Tässä tapauksessatimes = 3
, joten ehto on tosi; - Viestin tulostus: funktio tulostaa
"Hello, Recursion!"
; - Rekursiivinen kutsu: funktio kutsuu itseään arvolla
times - 1
; - Toisto: tämä prosessi jatkuu, kunnes
times
on 0; - Päättyminen: kun ehto
times > 0
ei enää täyty, rekursio päättyy ja ohjelma suorittuu loppuun.
Tulos: Viesti "Hello, Recursion!"
tulostetaan kolme kertaa.
Suorituksen kulku:
Joka kerta, kun funktio kutsuu itseään, se lisää uuden kehyksen kutsupinoon (muistirakenne, joka seuraa aktiivisia funktiokutsuja). Funktio jatkaa itseään pienemmällä times
-arvolla. Kun perusehto (times == 0
) saavutetaan, suoritus pysähtyy. Tämän jälkeen jokainen aiempi kutsu valmistuu yksi kerrallaan käänteisessä järjestyksessä. Tämä takaisinpäin eteneminen on olennainen osa rekursion toimintaa.
Swipe to start coding
Annettuna merkkijono, joka edustaa puhelinnumeroa ja saattaa sisältää välilyöntejä, viivoja, sulkuja tai muita ei-numeerisia merkkejä. Tavoitteena on poimia vain numerot rekursion avulla.
- Jos syötemerkkijono
number
on tyhjä, palautetaan tyhjä merkkijono. - Tarkista, onko merkkijonon
number
ensimmäinen merkki numero käyttämälläisdigit()
-metodiaif
-ehdossa. - Jos se on numero, yhdistä se rekursiivisen kutsun tulokseen funktiolle
format_phone_number
, välittäen alimerkkijono alkaen toisesta merkistä. - Jos se ei ole numero, tee rekursiivinen kutsu funktiolle
format_phone_number
, ohittaen ensimmäinen merkki.
Ratkaisu
Kiitos palautteestasi!
single