Void ja Rekursio
Void-palautetyyppi C-kielessä
C-ohjelmointikielessä funktiot, joille on määritelty tietty palautetyyppi, odotetaan sisältävän return-lauseen, joka palauttaa kyseistä tyyppiä vastaavan arvon. On kuitenkin tilanteita, joissa funktion ei tarvitse palauttaa mitään – esimerkiksi kun se vain tulostaa tekstiä näytölle. Näissä tapauksissa funktio tulisi määritellä käyttämällä void-tyyppiä.
Main.c
12345678910#include <stdio.h> void func() { printf("This function returns nothing\n"); } int main() { func(); return 0; }
Avainsana void määrittää, että funktio ei palauta arvoa, ja sitä voidaan käyttää myös osoittimien yhteydessä. Jos yritetään määritellä muuttuja tyyppiä void, syntyy virhe, koska kääntäjä ei tiedä kuinka paljon muistia varata.
Main.c
1234567#include <stdio.h> int main() { void variable; return 0; }
Rekurssio
C tukee ominaisuutta, jossa funktio voi kutsua itseään, ja tätä tekniikkaa kutsutaan rekurssioksi.
Kuvittele rekurssiota kuin kuminauhan venyttämistä ja vapauttamista. Sitä hyödynnetään usein matemaattisissa operaatioissa, kuten kertomien laskemisessa.
Kertomia käytetään usein funktioarvojen approksimointiin laajentamalla nämä funktiot Taylorin tai Maclaurinin sarjoiksi.
Main.c
1234567891011121314151617181920#include <stdio.h> int factorial(int n) { // if n = 0 or 1, because 0! = 1 and 1! = 1 if (n == 0 || n == 1) return 1; // recursion case else return n * factorial(n - 1); } int main() { int n = 3; printf("factorial(%d) = %d\n", n, factorial(n)); return 0; }
Rekursiossa funktio kutsuu itseään uudelleen, kunnes ehto n == 0 || n == 1 täyttyy. Kun tämä ehto saavutetaan, seuraavien factorial()-funktion kutsujen tulokset palautetaan käänteisessä järjestyksessä, kuten haitarin taittaminen. Kun vaihe 6 saavutetaan, alkuperäinen kutsu factorial(3) palauttaa arvon 6.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 2.63
Void ja Rekursio
Pyyhkäise näyttääksesi valikon
Void-palautetyyppi C-kielessä
C-ohjelmointikielessä funktiot, joille on määritelty tietty palautetyyppi, odotetaan sisältävän return-lauseen, joka palauttaa kyseistä tyyppiä vastaavan arvon. On kuitenkin tilanteita, joissa funktion ei tarvitse palauttaa mitään – esimerkiksi kun se vain tulostaa tekstiä näytölle. Näissä tapauksissa funktio tulisi määritellä käyttämällä void-tyyppiä.
Main.c
12345678910#include <stdio.h> void func() { printf("This function returns nothing\n"); } int main() { func(); return 0; }
Avainsana void määrittää, että funktio ei palauta arvoa, ja sitä voidaan käyttää myös osoittimien yhteydessä. Jos yritetään määritellä muuttuja tyyppiä void, syntyy virhe, koska kääntäjä ei tiedä kuinka paljon muistia varata.
Main.c
1234567#include <stdio.h> int main() { void variable; return 0; }
Rekurssio
C tukee ominaisuutta, jossa funktio voi kutsua itseään, ja tätä tekniikkaa kutsutaan rekurssioksi.
Kuvittele rekurssiota kuin kuminauhan venyttämistä ja vapauttamista. Sitä hyödynnetään usein matemaattisissa operaatioissa, kuten kertomien laskemisessa.
Kertomia käytetään usein funktioarvojen approksimointiin laajentamalla nämä funktiot Taylorin tai Maclaurinin sarjoiksi.
Main.c
1234567891011121314151617181920#include <stdio.h> int factorial(int n) { // if n = 0 or 1, because 0! = 1 and 1! = 1 if (n == 0 || n == 1) return 1; // recursion case else return n * factorial(n - 1); } int main() { int n = 3; printf("factorial(%d) = %d\n", n, factorial(n)); return 0; }
Rekursiossa funktio kutsuu itseään uudelleen, kunnes ehto n == 0 || n == 1 täyttyy. Kun tämä ehto saavutetaan, seuraavien factorial()-funktion kutsujen tulokset palautetaan käänteisessä järjestyksessä, kuten haitarin taittaminen. Kun vaihe 6 saavutetaan, alkuperäinen kutsu factorial(3) palauttaa arvon 6.
Kiitos palautteestasi!