Skip to content

Instantly share code, notes, and snippets.

@tlasica
Last active June 24, 2020 09:04
Show Gist options
  • Save tlasica/5788de9820b698dee6312bc89a438983 to your computer and use it in GitHub Desktop.
Save tlasica/5788de9820b698dee6312bc89a438983 to your computer and use it in GitHub Desktop.
# fib(0) = 0
# fib(1) = 1
# fib(n) = fib(n-1) + fib(n-2)
fib_numbers = [0, 1] # dwie pierwsze liczby fib, czyli fib(0) i fib(1)
def fast_fib(n):
# jesli n jest mniejsze od liczby numerow w liscie
# to znaczy, ze znamy juz fib(n) bo mamy je w liscie
# czyli mozemy po prostu je zwrocic z listy zamiast liczyc
if n < len(fib_numbers):
return fib_numbers[n]
# musimy policzyc wywolujac nasza funkcje dla n-1 i n-2 i dodac
# to sie nazywa rekursja: funkcja sama siebie wykonuje
fn = fast_fib(n-1) + fast_fib(n-2)
# jesli nasze n to jest nastepne brakujace (bo juz znamy 0...n-1)
# to dodajemy wynik do listy fib_numbers, zapamietujemy go
if n == len(fib_numbers):
fib_numbers.append(fn)
# zwracamy wynik
return fn
print("fib(50) =", fast_fib(50))
# co dalej
# anpisac to samo samemu od zera
# najpierw wolna wersje,
# potem szybka wersja
# zadania z minilogii etap 1
# funkcja sprawdzajaca czy liczba n jest liczba 1.
# https://pygame-zero.readthedocs.io/en/stable/index.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment