我对这个问题有点困惑。这是代码。
var finishes = function (f,x) {
//fill this in
}
在尝试实现此功能之前,请考虑以下事项:
var p = function (g) {
if(finishes(g,g)){
while (true) { }
}
};
基本上,函数p接受函数g并在g(g)
永远运行时结束,并在g(g)
完成时永远运行。那么,呼叫p(p)
的含义是什么?这表明甚至可以编写函数"完成"?
我对这个问题的措辞感到困惑。谁能解释一下?
答案 0 :(得分:2)
P
函数的意义不是它做了什么,但它反驳了一些东西:
让我们说有一个函数finishes
可以告诉你其他函数是否曾停止/停止。如果我们运行p(p)
会不会发生什么?
如果finishes
返回true表示p
停止,那么p将永远运行。
如果finishes
返回false意味着p
永不停止,那么p将会停止!
因此,没有函数finishes
可以告诉您函数是否暂停
答案 1 :(得分:1)
这已被证明是非确定性的,所以你不能真正预测任何函数作为输入是否会结束。
这称为halting problem。