用Python写一个DFS时,函数只会返回第一次return 的值,然后就结束了,之后递归的结果却没有返回,这个问题该怎么解决

#问题
用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)

#错误结果

img


#改正的结果,以及想要的结果

img

img

你的find函数,当且仅当f==4并且ind<5的时候才返回1
可是你第30行,这两个参数一直传入的是0,0,相当于你的

num+=find(i, j, 0, 0)
# 等价于这里一直是
num+=0
# 你得修改在这里传入的 f 和 ind 才行
```)
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/655723285866188.png "#left")