algorithm - 这个算法会终止吗?

标签 algorithm language-agnostic infinite-loop halting-problem

集合中有不同的值,这个算法(伪代码)会终止吗?

while (curElement != average(allElements))
{
    curElement = average(allElements);
    nextElement();
}

请注意,如果我们位于数组末尾,我假设我们将从头开始。

最佳答案

由于这是伪代码,一个包含 2 个元素的简单示例将揭示在某些情况下程序不会终止:

x = 0, y = 1;

          x     y
Step 1:   0.5   1
Step 2:   0.5   0.75
Step 3:   0.635 0.75
//and so one

涉及一些数学,lim(x-y) = lim( 1/2^n )

所以数字会收敛,但它们永远不会相等。

但是,如果您真的在计算机上实现它,由于硬件限制,它们会相等 - 并非所有数字都可以用有限的位数表示。

关于algorithm - 这个算法会终止吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225730/

相关文章:

algorithm - 将 URL 编码(和解码)为一串字母

language-agnostic - Code Golf : Seven Segments

python - os.walk 陷入无限循环

algorithm - 坐在电影院里的人

c++ - 为什么我的输出在到达代码的这一部分时卡住了?

python - 如何在Enthought Canopy环境下中断Python的无限循环?

javascript - 如果比较函数不可传递,Array.sort() 的行为如何?

c++ - C++ 中 strstr() 函数的时间复杂度、空间复杂度和算法是什么?

algorithm - 使用时差 (TDOA) 对信号进行三边测量

language-agnostic - 我应该从哪里开始解决这个优化问题?