确定此函数是否完成或永久运行

时间:2014-12-11 08:34:06

标签: javascript

我对这个问题有点困惑。这是代码。

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)的含义是什么?这表明甚至可以编写函数"完成"?

我对这个问题的措辞感到困惑。谁能解释一下?

2 个答案:

答案 0 :(得分:2)

是什么@aduch开始说,但还没有完成他的问题,是P函数的意义不是它做了什么,但它反驳了一些东西:

让我们说有一个函数finishes可以告诉你其他函数是否曾停止/停止。如果我们运行p(p)会不会发生什么?

如果finishes返回true表示p停止,那么p将永远运行。

如果finishes返回false意味着p永不停止,那么p将会停止!

因此,没有函数finishes可以告诉您函数是否暂停

答案 1 :(得分:1)

这已被证明是非确定性的,所以你不能真正预测任何函数作为输入是否会结束。

这称为halting problem