Wpis z mikrobloga

@Analityk: Nigdy sie z tym nie bawiłem, ale może dałoby się osiągnąć niezłą dokładność (i na pewno bardzo dużą szybkość) eliminując rekurencję? Pamiętam ze studiów, że były na to wzory (przekształcenie ciągu rekurencyjnego na "normalny"). Dla dużych liczb przydałby się jednak duźy typ zmiennoprzecinkowy lub obliczenia symboliczne, gdyż w wynikowym zbiorze będą pierwiastki.
  • Odpowiedz
@i386: Przyznaj, że nie zajrzałeś do kodu. Wstyd.

Algorytm jest liniowy, iteracyjny. Jest bardzo szybki. Teraz dla wartości tabssize = 15000 fib(50000) generował około minuty dając w wyniku liczbę składającą się z około 11 tyś. cyfr.
  • Odpowiedz
@Analityk: No nie przyczytałem, ale i tak mam rację ( ͡° ͜ʖ ͡°).

Mimo, że liczysz to iteracyjnie, to i tak korzystasz z rekurencyjnego wzoru ciągu.

To, o czym mówię, to użycie
  • Odpowiedz
@i386:

Mimo, że liczysz to iteracyjnie, to i tak korzystasz z rekurencyjnego wzoru ciągu


Tak. Ale n-ty wyraz ciągu obliczam raz. Sprawdź jak urośnie stos w przypadku fib(10000) jeśli policzysz rekurencyjnie. Dlatego uważam, że używam tak mało pamięci jak to tylko możliwe (do zapamiętania tak dużych cyfr) ale nie mniej niż to wymagane. I co ważne pamięć zajmuję
  • Odpowiedz