Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Void og Rekursion | Funktioner
C-Grundlæggende

bookVoid og Rekursion

Datatypen void som returtype i C

I programmeringssproget C forventes funktioner, der er erklæret med en specifik returtype, at have en return-sætning, som returnerer en værdi af den pågældende type. Der findes dog situationer, hvor en funktion ikke behøver at returnere noget – for eksempel hvis den blot viser tekst på skærmen. I sådanne tilfælde skal funktionen erklæres 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; }

Nøgleordet void angiver, at en funktion ikke returnerer en værdi, og det kan også anvendes i forbindelse med pointere. Forsøg på at erklære en variabel af typen void vil resultere i en fejl, da compileren ikke kan afgøre hvor meget hukommelse der skal tildeles.

Main.c

Main.c

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

Rekursion

C understøtter muligheden for, at en funktion kan kalde sig selv, en teknik kendt som rekursion.

Forestil dig rekursion som handlingen at strække og derefter slippe en elastik. Det anvendes ofte i matematiske operationer, såsom beregning af fakulteter.

Fakulteter bruges ofte til at approksimere funktionsværdier ved at udvide disse funktioner til Taylor- eller Maclaurin-rækker.

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 forbindelse med rekursion vil funktionen fortsætte med at kalde sig selv, indtil betingelsen n == 0 || n == 1 er opfyldt. Når denne betingelse er opfyldt, returneres resultaterne fra de efterfølgende factorial() funktionskald i omvendt rækkefølge, svarende til at folde et harmonika sammen. Når trin 6 er nået, vil det oprindelige kald til factorial(3) returnere 6.

question mark

Forestil dig en reklame, hvor du ser en pige holde en flaske mælk. På denne flaske er der endnu et billede af den samme pige, der holder en flaske mælk, og på den mindre flaske er der endnu et billede af pigen, og så videre. Hvad kaldes dette koncept?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

Can you explain more about how recursion works in C?

What are some common mistakes to avoid when using recursion?

Can you give an example of a recursive function in C?

Awesome!

Completion rate improved to 2.63

bookVoid og Rekursion

Stryg for at vise menuen

Datatypen void som returtype i C

I programmeringssproget C forventes funktioner, der er erklæret med en specifik returtype, at have en return-sætning, som returnerer en værdi af den pågældende type. Der findes dog situationer, hvor en funktion ikke behøver at returnere noget – for eksempel hvis den blot viser tekst på skærmen. I sådanne tilfælde skal funktionen erklæres 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; }

Nøgleordet void angiver, at en funktion ikke returnerer en værdi, og det kan også anvendes i forbindelse med pointere. Forsøg på at erklære en variabel af typen void vil resultere i en fejl, da compileren ikke kan afgøre hvor meget hukommelse der skal tildeles.

Main.c

Main.c

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

Rekursion

C understøtter muligheden for, at en funktion kan kalde sig selv, en teknik kendt som rekursion.

Forestil dig rekursion som handlingen at strække og derefter slippe en elastik. Det anvendes ofte i matematiske operationer, såsom beregning af fakulteter.

Fakulteter bruges ofte til at approksimere funktionsværdier ved at udvide disse funktioner til Taylor- eller Maclaurin-rækker.

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 forbindelse med rekursion vil funktionen fortsætte med at kalde sig selv, indtil betingelsen n == 0 || n == 1 er opfyldt. Når denne betingelse er opfyldt, returneres resultaterne fra de efterfølgende factorial() funktionskald i omvendt rækkefølge, svarende til at folde et harmonika sammen. Når trin 6 er nået, vil det oprindelige kald til factorial(3) returnere 6.

question mark

Forestil dig en reklame, hvor du ser en pige holde en flaske mælk. På denne flaske er der endnu et billede af den samme pige, der holder en flaske mælk, og på den mindre flaske er der endnu et billede af pigen, og så videre. Hvad kaldes dette koncept?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 6
some-alt