Problem z algorytmem skoczka

0

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

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)

1 użytkowników online, w tym zalogowanych: 0, gości: 1