Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Void och Rekursion | Funktioner
C-Grunder

bookVoid och Rekursion

Returntypen void i C

I programmeringsspråket C förväntas funktioner som deklareras med en specifik returtyp ha en return-sats som levererar ett värde av den typen. Det finns dock situationer där en funktion inte behöver returnera något – till exempel om den endast visar text på skärmen. I sådana fall ska funktionen deklareras med typen void.

Main.c

Main.c

copy
12345678910
#include <stdio.h> void func() { printf("This function returns nothing\n"); } int main() { func(); return 0; }

void-nyckelordet anger att en funktion inte returnerar ett värde, och det kan även användas i samband med pekare. Om man försöker deklarera en variabel av typen void uppstår ett fel eftersom kompilatorn inte kan avgöra hur mycket minne som ska allokeras.

Main.c

Main.c

copy
1234567
#include <stdio.h> int main() { void variable; return 0; }

Rekursion

C stöder möjligheten för en funktion att anropa sig själv, en teknik som kallas rekursion.

Föreställ dig rekursion som att sträcka ut och sedan släppa ett gummiband. Det används ofta vid matematiska operationer, såsom beräkning av fakulteter.

Fakulteter används ofta för att approximera funktionsvärden genom att utveckla dessa funktioner i Taylor- eller Maclaurinserier.

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; }

I samband med rekursion kommer funktionen att fortsätta anropa sig själv tills villkoret n == 0 || n == 1 uppfylls. När detta villkor är uppfyllt returneras resultaten från de efterföljande anropen av funktionen factorial() i omvänd ordning, likt att vika ihop ett dragspel. När steg 6 nås kommer det ursprungliga anropet till factorial(3) att returnera 6.

question mark

Föreställ dig en annons där du ser en flicka som håller i en mjölkflaska. På denna flaska finns en annan bild av samma flicka som håller i en mjölkflaska, och på den mindre flaskan finns ytterligare en bild av flickan, och så vidare. Vad kallas detta koncept?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 2.63

bookVoid och Rekursion

Svep för att visa menyn

Returntypen void i C

I programmeringsspråket C förväntas funktioner som deklareras med en specifik returtyp ha en return-sats som levererar ett värde av den typen. Det finns dock situationer där en funktion inte behöver returnera något – till exempel om den endast visar text på skärmen. I sådana fall ska funktionen deklareras med typen void.

Main.c

Main.c

copy
12345678910
#include <stdio.h> void func() { printf("This function returns nothing\n"); } int main() { func(); return 0; }

void-nyckelordet anger att en funktion inte returnerar ett värde, och det kan även användas i samband med pekare. Om man försöker deklarera en variabel av typen void uppstår ett fel eftersom kompilatorn inte kan avgöra hur mycket minne som ska allokeras.

Main.c

Main.c

copy
1234567
#include <stdio.h> int main() { void variable; return 0; }

Rekursion

C stöder möjligheten för en funktion att anropa sig själv, en teknik som kallas rekursion.

Föreställ dig rekursion som att sträcka ut och sedan släppa ett gummiband. Det används ofta vid matematiska operationer, såsom beräkning av fakulteter.

Fakulteter används ofta för att approximera funktionsvärden genom att utveckla dessa funktioner i Taylor- eller Maclaurinserier.

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; }

I samband med rekursion kommer funktionen att fortsätta anropa sig själv tills villkoret n == 0 || n == 1 uppfylls. När detta villkor är uppfyllt returneras resultaten från de efterföljande anropen av funktionen factorial() i omvänd ordning, likt att vika ihop ett dragspel. När steg 6 nås kommer det ursprungliga anropet till factorial(3) att returnera 6.

question mark

Föreställ dig en annons där du ser en flicka som håller i en mjölkflaska. På denna flaska finns en annan bild av samma flicka som håller i en mjölkflaska, och på den mindre flaskan finns ytterligare en bild av flickan, och så vidare. Vad kallas detta koncept?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 6
some-alt