用递归函数求八皇后里面的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也可以,但去掉就出错啊?
这里第一个 if 实际上就是给递归设置一个出口用的,防止陷入无限递归
因为你执行到 return 时就可以返回到进入本次递归前,就不会执行下面的 for 循环,从而终止继续进入递归
而如果你删去return 那么就会导致继续执行 for 循环而持续递归,最终导致无限递归
return 设置的值这里随意,因为只是起到终止本次递归的效果
页:
[1]