zastanawiałem się, czy możliwe jest poznanie ile razy funkcja Fibonacciego została wywołana dla każdego n z przedziału 1…N., gdzie N - podaje użytkownik
nie wiem czy dość dokładnie pokazałem o co mi chodzi, ale tłumaczyć tego rozwlekle nie chce, bo jeszcze gorzej zagmatwam :lol:
z wyjściem na konsolę, o ile dobrze zinterpretowałem
bardzo fajne, ale to rozwikłałem. Przykładowo dla n=10 mam 177 wywołań, ale jest to ogólna liczba wszystkich wywołań… a jak policzyć ile wywołań było dla każdego węzła… bo o to tutaj chodzi
tj. ile razy wywołała się dla
10, dla 9, dla 8 itd…, pewnie chodzi tutaj o włączenia gdzieś w kod czegoś na kształt
licznik++
który będzie pokazywał wynik, jak rekurencja wróci do danego poziomu i wszystko w oddzielnym wyniku
Tzn. chodzi Ci o to, że wywołując fib(10) ile razy wywołane zostało fib(10), fib(9), fib(8)…, fib(1)? Jeśli o to Ci chodzi, to liczba wywołań fib(N), …, fib(1) tworzy właśnie ciąg Fibonacciego. Np. dla fib(10):
nie mam tylko za bardzo koncepcji jak to rozwiązać
ale chyba najlepsza byłaby tablica ?
– Dodane Wt paź 19, 2010 12:01 pm –
FUNCTION Fib_Rec (
N : IN Integer)
RETURN Integer IS
BEGIN
Steps_Rec := Steps_Rec + 1;
Steps_Level(N) := Steps_Level(N) + 1;
IF N = 0 THEN
RETURN 0;
ELSIF N = 1 THEN
RETURN 1;
ELSE
RETURN Fib_Rec(N - 2) + Fib_Rec(N - 1);
END IF;
END Fib_Rec;
gdzie Steps_Level jest wskaźnikiem do tablicy o rozmiarze adekwatnym do podanego N