不会敲代码的破茧 2022-11-16 14:54 采纳率: 0%
浏览 16

用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

  • 写回答

2条回答 默认 最新

  • Rattenking Python领域优质创作者 2022-11-16 15:00
    关注

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 11月16日

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退