#问题
用Python写一个DFS时,函数只会返回第一次return 的值,然后就结束了,之后递归的结果却没有返回,这个问题该怎么解决
#问题代码
z = ["C", "H", "I", "N", "A"]
fx = [0, 0, -1, 1]
fy = [1, -1, 0, 0]
def find(x, y, f, ind):
# global num
if s[x][y] == z[f]:
ind += flag[x][y]
flag[x][y] = 1
if f == 4:
if ind <5:
# num+=1
return 1
else:
return 0
for i in range(4):
if 0 <= fx[i] + x and fx[i] + x < n and 0 <= y + fy[i] and y + fy[i] < n:
if s[fx[i] + x][fy[i] + y] == z[f + 1]:
find(fx[i] + x, fy[i] + y, f + 1, ind)
return 0
while True:
n = int(input())
s = []
flag = [[0 for i in range(n)] for j in range(n)]
for i in range(n):
s.append(list(map(str, input())))
num = 0
for i in range(n):
for j in range(n):
if s[i][j] == 'C':
num+=find(i, j, 0, 0)//为什么返回的结果都是0
print(num)
#错误结果
#改正的结果,以及想要的结果