hfyzm 发表于 2021-5-17 11:26:48

用递归函数求八皇后里面的return 0的意思

def queen(A, cur=0):
    if cur == len(A):
      print(A)
      return 0
    for col in range(len(A)):# 遍历当前行的所有位置
      A = col
      for row in range(cur):# 检查当前位置是否相克
            if A == col or abs(col - A) == cur - row:
                break
      else:# 如果完成了整个遍历,则说明位置没有相克
            queen(A, cur+1)# 计算下一行的位置
queen(*8)

   第四行的return 0什么意思啊?为什么可以回到上一行的下一步继续遍历啊?return 1也可以,但去掉就出错啊?

Twilight6 发表于 2021-5-17 13:40:27


这里第一个 if 实际上就是给递归设置一个出口用的,防止陷入无限递归

因为你执行到 return 时就可以返回到进入本次递归前,就不会执行下面的 for 循环,从而终止继续进入递归

而如果你删去return 那么就会导致继续执行 for 循环而持续递归,最终导致无限递归

return 设置的值这里随意,因为只是起到终止本次递归的效果
页: [1]
查看完整版本: 用递归函数求八皇后里面的return 0的意思