Cześć,
Mam pytanie jak działa taka funkcja:
function f(n) {
if (n == 0) { return 0; }
if (n == 1) { return 1; }
return f(n - 1) + f(n - 2);
}
console.log(f(6));
Rozumiem, ze rekurencja polega na ponownym wywoływaniu się funkcji dopóki określony warunek jest spełniony. Jak określana jest wartość return f(n-1) + f(n -2) ? f(n-1) i f(n-2) wywołują ponownie funkcję i w tym przypadku byłoby to:
f(6) = f(6-1) => f(5) = f(5-1) => f(4) = f(4-1) => f(3) = f(3-1) => f(2) = f(2-1) = 1
f(6) = f(6-2) => f(4) = f(4-2) => f(2) = f(2-2) = 0
Gdzie jest błąd w moim rozumieniu działania tej funkcji? Co zwraca każde wywołanie poza kolejnym wywołaniem funkcji? Prosiłbym o łopatologiczne wyjaśnienie tematu.
EDIT
Ok, już to rozgryzłem. Może komuś się przyda. Polecam zamienić zwracane wartości na stringi i przyjrzeć się dokładnie temu co jest zwracane :)
if (n == 0) { return "0"; }
if (n == 1) { return "1"; }
result: 1011010110110
Pozdrawiam