int rec(int n)
{
if (n < 2) {
return 1;
}
return n*rec(n-1);
}
int main() {
int silnia = rec(5);
std::cout << silnia;
return 0;
}
Hej, znalazłem w internecie powyższy przykład jako najlepszy przykład działania rekurencji. No i faktycznie wszystko działa ale nie moge uzmysłowić sobie jednej rzeczy.
Skoro w warunku mam przypadek domyślny jako return 1 to dlaczego w ogóle w zmiennej "Silnia" mam poprawną wartość? Patrzac na to wydaje mi się, że funkcja na sam koniec powinna zwrócić po prostu 1.
Rozumiem to tak (poprawcie mnie jeśli się mylę):
Wykonująca się rekurencja nie zwraca żadnej wartości dopóki jej praca się nie dopełni.
W tym przypadku podstawia sobie wartości do równania jakim jest mnożenie kolejnych liczba i dopiero na sam koniec, kiedy już zwraca wartość zamiast samej siebie, wykonuje mnożenie i wyrzuca wynik.
Jak to na spojrzec aby zrozumieć?