gpt4 book ai didi

python - 如何计算递归函数中的案例数?

转载 作者:行者123 更新时间:2023-12-03 14:21:25 25 4
gpt4 key购买 nike

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。
很快,我只想让计数器不受递归函数的影响。

最佳答案

解决此问题的方法之一是将您从每个递归函数的返回中获得的计数相加。当您调用递归函数时,将返回的计数添加到 count 中。当前作用域中的变量。例如:

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:
count += calcPath(trace_map, x + trace_map[x][y], y)
count += calcPath(trace_map, x, y + trace_map[x][y])
return count
另一种解决方案是创建一个全局变量并在每次调用函数时将其重置为 0(尽管我不建议这样做,因为每次调用函数时都需要仪式)。
这可能看起来像这样:
count = 0 # Global variable

def calcPath(trace_map, x, y):
global count
n = len(trace_map)
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])


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))

# Use count in some way

count = 0 # Reset the count

trace_map = [[1, 1, 1], [1, 1, 2], [1, 2, 0]]
print(calcPath(trace_map, 0, 0))

关于python - 如何计算递归函数中的案例数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64803895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com