Funkcja rekurencyjna
Lekcja 8 z 17 w kursie Funkcje w C w Coddy.
Funkcja rekurencyjna to funkcja, która wciąż wywołuje samą siebie.
Znanym przykładem zastosowania tej funkcji jest obliczanie silni liczby.
Wzór na silnię to n!=1×2×…×n.
Aby obliczyć silnię liczby, musimy pomnożyć przez siebie wszystkie liczby od 1 do n.
Na przykład:
4!=1×2×3×4=24Możemy zdefiniować funkcję rekurencyjną w ten sposób:
int fact(int n) {
if (n == 1) {
return 1;
}
return n * fact(n - 1);
}Wyobraź sobie, że masz schody. Aby zacząć się wspinać, stajesz na parterze (stopień 0). W funkcji rekurencyjnej ten punkt początkowy nazywa się przypadkiem bazowym. To w tym miejscu funkcja przestaje wywoływać samą siebie i zwraca wartość.
W przykładzie z silnią przypadkiem bazowym jest sytuacja, gdy nnn (liczba) wynosi 1. Silnia z 1 wynosi po prostu 1, więc funkcja zwraca 1 bez wykonywania dalszych obliczeń.
Najpierw sprawdzamy, czy liczba jest równa jeden:
if (n == 1) {
return 1;
}Wywołania rekurencyjne:
Dla każdej liczby większej niż 1 funkcja korzysta z mniejszych wersji samej siebie. Wywołuje samą siebie z argumentem n−1 (o jeden stopień niżej). To jest wywołanie rekurencyjne:
return n * fact(n - 1);Pomyśl o tym jak o wspinaniu się po schodach. Aby wejść na stopień 5, najpierw musisz wejść na stopień 4, potem na stopień 3 i tak dalej. Każde wywołanie rekurencyjne przypomina wejście o jeden stopień wyżej.
Wyzwanie
ŁatwyZdefiniuj funkcję rekurencyjną:
- Napisz funkcję o nazwie countdown, która przyjmuje parametr będący liczbą całkowitą n.
- Wewnątrz tej funkcji wypisz bieżącą wartość n.
- Jeśli n jest większe niż 0, rekurencyjnie wywołaj countdown z argumentem n - 1.
- Jeśli n jest równe 0 lub mniejsze, wypisz "Blastoff!".
Przykład: jeśli liczba wynosi 3, wynik powinien wyglądać tak:
3
2
1
Blastoff!
Spróbuj swoich sił
#include <stdio.h>
// Zdefiniuj funkcję countdown
int main() {
int start = 5;
// Wywołaj funkcję
return 0;
}Wszystkie lekcje w sekcji Funkcje w C
Poćwicz samodzielnie: Kompilator C online