为什么我的“递归打印校样”不起作用?

2024-05-21 11:44:04 发布

您现在位置:Python中文网/ 问答频道 /正文

对于赋值,我们必须编写Python代码,对命题逻辑KB执行解析

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

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

希望任何人都能帮助我

recursive_print_proof几乎可以在末尾找到。我的代码是:

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


Tags: 代码inforifkbclauserecursiveprint
1条回答
网友
1楼 · 发布于 2024-05-21 11:44:04

如果您想知道代码在recursive_print_proof中旋转的原因

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

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

相关问题 更多 >