【发布时间】:2021-02-24 10:57:52
【问题描述】:
def calcPath(trace_map, x, y):
n = len(trace_map)
count = 0
if x > n - 1 or y > n - 1:
pass
elif x < n and y < n:
if x + trace_map[x][y] == (n - 1) and y == (n - 1):
count += 1
elif x == (n - 1) and y + trace_map[x][y] == (n - 1):
count += 1
else:
calcPath(trace_map, x + trace_map[x][y], y)
calcPath(trace_map, x, y + trace_map[x][y])
return count
if __name__ == "__main__":
trace_map = [
[1, 2, 9, 4, 9],
[9, 9, 9, 9, 9],
[9, 3, 9, 9, 2],
[9, 9, 9, 9, 9],
[9, 9, 9, 1, 0],
]
print(calcPath(trace_map, 0, 0))
trace_map = [[1, 1, 1], [1, 1, 2], [1, 2, 0]]
print(calcPath(trace_map, 0, 0))
我想计算给定迷宫的现有路线。 (反正问题本身没那么重要) 问题是,我试图计算符合递归函数条件的案例数量。
这是必须计算的两个条件。
if x + trace_map[x][y] == (n - 1) and y == (n - 1):
if x == (n - 1) and y + trace_map[x][y] == (n - 1):
我试着像这样计算条件
count = 0
if condition = True:
count +=1
但由于我使用的是递归函数,如果我在函数中声明 count = 0,则计数值保持为 0。
简而言之,我只想保持计数器不受递归函数的影响。
【问题讨论】:
-
为什么不在函数外部声明为全局变量呢?您还可以创建一个变量
calcPath.counter并在函数外部对其进行初始化。 -
@mkrieger1 哎呀,对不起。这是我第一次使用堆栈????必须改变它。
-
你可以写
count += calcPath(...)这样的东西而不是丢弃返回的计数 -
@user14625681 我添加了一个更容易实现的答案
标签: python if-statement recursion counter counting