Как избежать использования глобальной переменной в этой функции рекурсии и улучшить мой код? - PullRequest
1 голос
/ 28 июня 2019

Я сделал следующую функцию, чтобы решить проблему крысиного лабиринта, где крыса может двигаться только вперед и вниз, и мне нужно было найти количество возможных путей. Я сделал это, но я хочу, чтобы избежать глобальной переменной. Как улучшить мой код?

possible_ways = 0

def solve(n,x,y):
  if x == n-1 and y == n-1:
    global possible_ways
    possible_ways = possible_ways+1
    return True
  if x<=n-1 and y<=n-1:
    solve(n,x+1,y)
    solve(n,x,y+1)

solve(4,0,0)

print(possible_ways)

1 Ответ

0 голосов
/ 28 июня 2019

В этом случае вы можете заставить функцию возвращать значение (для всех возможных путей кода в нем - ваш код возвращал None всякий раз, когда первое if условие было неверным):

def solve(n,x,y):
    if x == n-1 and y == n-1:
        return 1

    if x <= n-1 and y <= n-1:
        return solve(n,x+1,y) + solve(n,x,y+1)

    return 0

possible_ways = solve(4,0,0)
print(possible_ways)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...