Proszę o pomoc bo brakuje mi pomyslow jak zrobic licznik wywolania funkcji w petli rekurencyjnej. W ramach nauki pythona napisalem sobie algorytm skoczka na szachownicy a teraz chcialbym zliczyc ile kombinacji musial przeanalizowac zanim doszedl do rozwiazania no i jest problem bo zmienna globalna nie dziala i nawet jak stworzylem obiekt ktory ma liczyc tez nie dzialalo. Pewnie robie cos nieudolnie i nie mam juz pomyslu poza moze zapisywaniem zmiennej do pliku i odczytywaniem za kazdym razem :-)
0
0
Możesz to zrobić na kilka sposobów, między innymi używając zmiennej globalnej, tak jak to robi funkcja recursion0
, albo zwracać licznik bezpośrednio (recursion1
). Pierwsza liczy ilość elementów liście, a druga je sumuje.
# Global var cnt used by fun recursion0:
cnt = 0
def is_empty(xs): # Check if collection empty
return True if not xs else False
def recursion0(xs):
global cnt
if is_empty(xs):
return 0
else:
cnt += 1
return 1 + recursion0(xs[1:])
print("function outcome, counter: ", recursion0([1, 2 ,3]), cnt) # -> function outcome, counter: 3 3
def recursion1(xs, s, cnt):
if is_empty(xs):
return s, cnt
else:
return recursion1(xs[1:], s + xs[0], cnt + 1)
print("Tuple: (function outcome, counter): ", recursion1([1, 2, 3], 0, 0)) # -> Tuple: (function outcome, counter): (6, 3)