首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的`recursive_print_proof`不能工作?

为什么我的`recursive_print_proof`不能工作?
EN

Stack Overflow用户
提问于 2020-06-17 05:00:09
回答 1查看 51关注 0票数 0

对于一个任务,我们必须编写对命题逻辑KB执行解析的Python代码。

除了recursive_print_proof之外,所有的代码似乎都工作得很好。当程序运行时,它将一直运行,直到您告诉它停止。

它应该做的是根据分辨率输出一个证明。然而,它似乎陷入了循环。

希望有人能帮我。

几乎可以在最后找到recursive_print_proof。我的代码是:

代码语言:javascript
复制
def recursive_print_proof(idx, clause_set):
    kb = init()
    if contains_empty_clause(kb):
        inferred = []
        for i in range(len(kb)):
            for j in range(i,len(kb)):
                if can_resolve(kb[i],kb[j]):
                    resolvent = resolve_clauses(kb[i],kb[j])
                    inferred.append(resolvent)
                    if clause_set[idx].equals(resolvent):
                        idx2 = find_index_of_clause(kb[j],clause_set)
                        recursive_print_proof(idx2,clause_set)
                        idx2 = find_index_of_clause(kb[i],clause_set)
                        recursive_print_proof(idx2,clause_set)
                        # printing
                        clause_set[idx].print_clause()
                        print(" is inferred from", end=" ")
                        kb[i].print_clause()
                        print(" and", end=" ")
                        kb[j].print_clause()
                        print(".")
                        break
                    break
                break
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-17 05:23:09

如果你想知道为什么代码会在recursive_print_proof中旋转...

您的recursive_print_proof方法在一个永远不会为false的条件while not contains_empty_clause(kb):上循环。所以它一直在旋转。

也许你希望它是if not contains_empty_clause(kb):

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62417515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档