Tärkein ero - Rekursio vs. iteraatio
Rekursiota ja iteraatiota voidaan käyttää ohjelmointiongelmien ratkaisemiseen. Lähestymistapa ongelman ratkaisemiseen rekursiolla tai iteraatiolla riippuu tapasta ratkaista ongelma. Tärkein ero rekursio ja iterointi on, että rekursio on mekanismi, jolla kutsutaan funktio saman toiminnon sisällä, kun taas iteraation on suorittaa komentosarja toistuvasti, kunnes annettu ehto on totta. Rekursio ja iteraatio ovat tärkeimpiä tekniikoita algoritmien kehittämiseksi ja ohjelmistosovellusten rakentamiseksi.
SISÄLLYS
1. Yleiskatsaus ja keskeinen ero
2. Mikä on rekursio
3. Mikä on iteraatio
4. Rekursioiden ja iteraatioiden yhtäläisyydet
5. Rinnakkainen vertailu - rekursio vs. iteraatio taulukkomuodossa
6. Yhteenveto
Mikä on rekursio?
Kun toiminto kutsuu itseään toiminnon sisällä, se tunnetaan nimellä Rekursio. Rekursioita on kahdenlaisia. Ne ovat äärellinen rekursio ja ääretön rekursio. Lopullisella rekursiolla on loppuva ehto. Äärettömällä rekursiolla ei ole loppuehtoa.
Rekursio voidaan selittää ohjelman avulla laskettaessa kertoimet.
n! = n * (n-1) !, jos n> 0
n! = 1, jos n = 0;
Laske kerroin 3 (3! = 3 * 2 * 1) palkkakoodilla.
intmain () {
int-arvo = kerroin (3);
printf ("Factorial on% d / n", arvo);
paluu 0;
}
intactorial (intn) {
jos (n == 0) {
paluu 1;
}
muu {
paluu n * kerroin (n-1);
}
}
Kun kutsutaan faktoriaa (3), kyseinen toiminto kutsuu faktoriaa (2). Kun kutsutaan faktoriaa (2), kyseinen toiminto kutsuu faktoriaa (1). Sitten faktori (1) kutsuu faktoriaa (0). kerroin (0) palauttaa arvon 1. Edellä olevassa ohjelmassa n == 0 ehto”if-lohkossa” on perusehto. Samoin mukaan kerroinfunktiota kutsutaan uudestaan ja uudestaan.
Rekursiiviset toiminnot liittyvät pinoon. C: ssä pääohjelmalla voi olla monia toimintoja. Joten main () on kutsuva toiminto, ja toiminto, jota pääohjelma kutsuu, on kutsuttu funktio. Kun toimintoa kutsutaan, ohjaus annetaan kutsutulle toiminnolle. Kun toiminto on suoritettu loppuun, ohjaus palautetaan päävalikkoon. Sitten pääohjelma jatkuu. Joten se luo aktivointitietueen tai pinokehyksen jatkaakseen suoritusta.
Kuva 01: Rekursio
Edellä mainitussa ohjelmassa, kun soitat factororialia (3) pääkeskuksesta, se luo aktivointitietueen puhelupinoon. Sitten tekijän (2) pinokehys luodaan pinon päälle ja niin edelleen. Aktivointitietue tallentaa tietoja paikallisista muuttujista jne. Joka kerta kun toimintoa kutsutaan, pinon yläosaan luodaan uusi joukko paikallisia muuttujia. Nämä pinokehykset voivat hidastaa nopeutta. Samoin rekursiossa funktio kutsuu itseään. Rekursiivisen funktion aikakompleksisuus löytyy kertojen lukumäärästä, funktiota kutsutaan. Yhden funktion kutsun aikakompleksi on O (1). N rekursiivisten puheluiden lukumäärän ajan monimutkaisuus on O (n).
Mikä on iteraatio?
Iteraatio on lohko käskyjä, jotka toistuvat uudestaan ja uudestaan, kunnes annettu ehto on totta. Iteraatio voidaan saavuttaa käyttämällä "for loop", "do-while loop" tai "while loop". "For loop" -syntaksi on seuraava.
for (alustus; ehto; muokkaa) {
// lausunnot;
}
Kuva 02: "silmukan vuokaavion osalta"
Alustusvaihe suoritetaan ensin. Tämän vaiheen tarkoituksena on julistaa ja alustaa silmukan ohjausmuuttujat. Jos ehto on totta, käyrät aaltosulkeet sisältävät lauseet. Nämä lausunnot suoritetaan, kunnes ehto on totta. Jos ehto on väärä, ohjaus siirtyy seuraavaan lauseeseen “for loop” -kohdan jälkeen. Suoritettuaan lauseet silmukan sisällä, ohjaus siirtyy modifioimaan osiota. Se on päivitettävä silmukan ohjausmuuttuja. Sitten kunto tarkistetaan uudelleen. Jos ehto on totta, käyristettyjen aaltosulkeiden sisällä olevat lauseet toteutetaan. Tällä tavoin”for loop” toistaa.
Kohdassa”while loop” silmukan sisällä olevat lauseet suoritetaan, kunnes ehto on tosi.
while (ehto) {
// lausunnot
}
”Do-while” -silmukassa kunto tarkistetaan silmukan lopussa. Joten silmukka suoritetaan ainakin kerran.
tehdä{
// lausunnot
} while (ehto)
Ohjelma 3: n (3!) Kertoimen löytämiseksi iteroinnin avulla ("silmukalle") on seuraava.
int main () {
intn = 3, kerroin = 1;
inti;
(i = 1; i <= n; i ++) {
faktori = faktori * i;
}
printf ("Factorial on% d / n", factororial);
paluu 0;
}
Mitkä ovat yhtäläisyydet rekursio ja iteraatio?
- Molemmat ovat tekniikoita ongelman ratkaisemiseksi.
- Tehtävä voidaan ratkaista joko rekursiona tai iteraationa.
Mikä on ero rekursio ja iteraatio?
Erilainen artikkeli keskellä taulukkoa
Rekursio vs. iteraatio |
|
Rekursio on tapa kutsua funktio samalla toiminnolla. | Iteraatio on lohko käskyjä, jotka toistuvat, kunnes annettu ehto on totta. |
Avaruuden monimutkaisuus | |
Rekursiivisten ohjelmien avaruus monimutkaisuus on suurempi kuin iteraatiot. | Avaruuden monimutkaisuus on pienempi iteraatioissa. |
Nopeus | |
Rekursio suoritetaan hitaasti. | Normaalisti iterointi on nopeampaa kuin rekursio. |
Kunto | |
Jos lopetusolosuhteita ei ole, voi olla ääretön rekursio. | Jos ehto ei koskaan tule vääräksi, se on loputon iteraatio. |
Pino | |
Rekursiossa pinoa käytetään paikallisten muuttujien tallentamiseen, kun toimintoa kutsutaan. | Iteraatiossa pinoa ei käytetä. |
Koodin luettavuus | |
Rekursiivinen ohjelma on luettavampi. | Iteratiivinen ohjelma on vaikeampaa lukea kuin rekursiivinen ohjelma. |
Yhteenveto - Rekursio vs. iteraatio
Tässä artikkelissa keskusteltiin rekursio ja iterointi välillä. Molempia voidaan käyttää ohjelmointiongelmien ratkaisemiseen. Rekursio ja iteraatio eroavat toisistaan siinä, että rekursio on mekanismi, jolla kutsutaan funktio saman toiminnon sisällä ja iteroidaan se suorittamaan käskyjoukko toistuvasti, kunnes annettu ehto on totta. Jos ongelma voidaan ratkaista rekursiivisessa muodossa, se voidaan ratkaista myös iteraatioiden avulla.
Lataa rekursio vs iteraatio PDF-versio
Voit ladata tämän artikkelin PDF-version ja käyttää sitä offline-tarkoituksiin lainausviestin mukaan. Lataa PDF-versio tästä Ero rekursio ja iteraatio