Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Void ja Rekursio | Funktiot
C:n Perusteet

bookVoid 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

Main.c

copy
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

Main.c

copy
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

Main.c

copy
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.

question mark

Kuvittele mainos, jossa näet tytön pitelemässä maitopulloa. Tässä pullossa on toinen kuva samasta tytöstä pitelemässä maitopulloa, ja tässä pienemmässä pullossa on jälleen kuva tytöstä, ja niin edelleen. Mikä tämä käsite on?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Awesome!

Completion rate improved to 2.63

bookVoid 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

Main.c

copy
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

Main.c

copy
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

Main.c

copy
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.

question mark

Kuvittele mainos, jossa näet tytön pitelemässä maitopulloa. Tässä pullossa on toinen kuva samasta tytöstä pitelemässä maitopulloa, ja tässä pienemmässä pullossa on jälleen kuva tytöstä, ja niin edelleen. Mikä tämä käsite on?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 6
some-alt