Python求解为什么这个循环是死循环

我认为函数应该停止一旦x达到8囷8打印出来。

您的代码不会做你认为它

每当您拨打p它会执行该方法中的代码,在您的情况下该代码将使用一些参数调用new_if。但是您立即评估这些参数,这意味着在输入new_if之前您的代码正在执行print(x)p(2*x)。这导致p再次被调用重复该过程。

在你如何评估代码的过程中似乎存在一些普遍的混淆:特别是你认为谓词和子句真的不是。在之前评估参数调用new_if。因此您可以通过p进行无限递归调用,几乎在您拨打p后立即评估p(2*x)

您可以通过传递函数来实现您想要的功能,然后您可以在您的new_if函数中进行评估这可以用lambda函数来完成,像这样:

我要回帖

 

随机推荐