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

Python 为什么我的“递归打印校样”不起作用?,python,loops,logic,infinite-loop,propositional-calculus,Python,Loops,Logic,Infinite Loop,Propositional Calculus,对于赋值,我们必须编写Python代码,对命题逻辑KB执行解析 除了递归\u打印\u校对,所有代码似乎都工作正常。运行程序时,它将一直运行,直到您告诉它停止 它应该做的是根据分辨率输出一个证明。然而,它似乎陷入了一个循环 希望任何人都能帮助我 recursive\u print\u proof几乎可以在末尾找到。我的代码是: def递归打印校样(idx,子句集): kb=init() 如果包含空子句(kb): 推断=[] 对于范围内的i(len(kb)): 对于范围(i,len(kb))内的j:

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

除了
递归\u打印\u校对
,所有代码似乎都工作正常。运行程序时,它将一直运行,直到您告诉它停止

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

希望任何人都能帮助我

recursive\u print\u proof
几乎可以在末尾找到。我的代码是:

def递归打印校样(idx,子句集):
kb=init()
如果包含空子句(kb):
推断=[]
对于范围内的i(len(kb)):
对于范围(i,len(kb))内的j:
如果可以解析(kb[i],kb[j]):
resolvent=resolve_子句(kb[i],kb[j])
推断的.append(预解)
if子句_set[idx].equals(预解):
idx2=查找子句的索引(kb[j],子句集合)
递归打印校样(idx2,子句集)
idx2=查找子句的索引(kb[i],子句集合)
递归打印校样(idx2,子句集)
#印刷品
子句集合[idx]。打印子句()
打印(“推断自”,结束=”)
kb[i].print_子句()
打印(“and”,end=”“)
kb[j].print_子句()
打印(“.”)
打破
打破
打破

如果您想知道为什么代码在
递归打印\u校对中旋转

您的
recursive\u print\u-proof
方法在一个条件
上循环,但不包含\u empty\u子句(kb):
它永远不会为false。所以它一直在旋转


如果不包含空子句(kb),您可能希望它是

是的,你说得对。程序确实在
上循环,但不包含\u empty\u子句(kb):
。我尝试将其更改为
if
-语句,现在程序不再循环,但仍然没有结果。你知道为什么会这样吗?