Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Funktionaalinen Rekursio Pythonissa | Osio
Python-Funktiot

bookFunktionaalinen Rekursio Pythonissa

Note
Määritelmä

Rekursio on ohjelmointitekniikka, jossa funktio kutsuu itseään ratkaistakseen ongelman pienemmissä osissa. Se on erityisen hyödyllinen ongelmissa, joissa on toistuva rakenne tai luonnollisia osaongelmia.

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 osaongelmien kautta. 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) purkamisessa.

1234567
def 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)
copy

Etene askel askeleelta ymmärtääksesi, miten tämä rekursiivinen ohjelma toimii:

  1. Ehtotarkistus: jos times > 0, funktio jatkaa. Tässä tapauksessa times = 3, joten ehto on tosi;
  2. Viestin tulostus: funktio tulostaa "Hello, Recursion!";
  3. Rekursiivinen kutsu: funktio kutsuu itseään arvolla times - 1;
  4. Toisto: tämä prosessi jatkuu, kunnes times on 0;
  5. Päättyminen: kun ehto times > 0 ei enää täyty, rekursio päättyy ja ohjelma suorittuu loppuun.

Tulos: Viesti "Hello, Recursion!" tulostetaan kolme kertaa.

Suoritusjärjestyksen ymmärtäminen:

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 perustapaus (times == 0) saavutetaan, kutsut pysähtyvät. Tämän jälkeen jokainen aiempi kutsu suoritetaan loppuun päinvastaisessa järjestyksessä. Tämä takaisinpäin eteneminen on olennainen osa rekursion toimintaa.

Tehtävä

Swipe to start coding

Annetaan merkkijono, joka esittää puhelinnumeroa ja voi 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()-metodia if-ehdossa.
  • Jos se on numero, yhdistä se rekursiivisen kutsun tulokseen format_phone_number, jossa parametrina on toisesta merkistä alkava aliketju.
  • Jos se ei ole numero, tee rekursiivinen kutsu format_phone_number, ohittaen ensimmäinen merkki.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 14
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

close

bookFunktionaalinen Rekursio Pythonissa

Pyyhkäise näyttääksesi valikon

Note
Määritelmä

Rekursio on ohjelmointitekniikka, jossa funktio kutsuu itseään ratkaistakseen ongelman pienemmissä osissa. Se on erityisen hyödyllinen ongelmissa, joissa on toistuva rakenne tai luonnollisia osaongelmia.

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 osaongelmien kautta. 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) purkamisessa.

1234567
def 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)
copy

Etene askel askeleelta ymmärtääksesi, miten tämä rekursiivinen ohjelma toimii:

  1. Ehtotarkistus: jos times > 0, funktio jatkaa. Tässä tapauksessa times = 3, joten ehto on tosi;
  2. Viestin tulostus: funktio tulostaa "Hello, Recursion!";
  3. Rekursiivinen kutsu: funktio kutsuu itseään arvolla times - 1;
  4. Toisto: tämä prosessi jatkuu, kunnes times on 0;
  5. Päättyminen: kun ehto times > 0 ei enää täyty, rekursio päättyy ja ohjelma suorittuu loppuun.

Tulos: Viesti "Hello, Recursion!" tulostetaan kolme kertaa.

Suoritusjärjestyksen ymmärtäminen:

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 perustapaus (times == 0) saavutetaan, kutsut pysähtyvät. Tämän jälkeen jokainen aiempi kutsu suoritetaan loppuun päinvastaisessa järjestyksessä. Tämä takaisinpäin eteneminen on olennainen osa rekursion toimintaa.

Tehtävä

Swipe to start coding

Annetaan merkkijono, joka esittää puhelinnumeroa ja voi 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()-metodia if-ehdossa.
  • Jos se on numero, yhdistä se rekursiivisen kutsun tulokseen format_phone_number, jossa parametrina on toisesta merkistä alkava aliketju.
  • Jos se ei ole numero, tee rekursiivinen kutsu format_phone_number, ohittaen ensimmäinen merkki.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 14
single

single

some-alt