鱼C论坛

 找回密码
 立即注册
查看: 1024|回复: 1

[已解决]用递归函数求八皇后里面的return 0的意思

[复制链接]
发表于 2021-5-17 11:26:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

     第四行的return 0什么意思啊?为什么可以回到上一行的下一步继续遍历啊?return 1也可以,但去掉就出错啊?
最佳答案
2021-5-17 13:40:27

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

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

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

return 设置的值这里随意,因为只是起到终止本次递归的效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-17 13:40:27 | 显示全部楼层    本楼为最佳答案   

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

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

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

return 设置的值这里随意,因为只是起到终止本次递归的效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 07:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表