代码之家  ›  专栏  ›  技术社区  ›  fastcodejava

如何检查程序是否终止?

  •  2
  • fastcodejava  · 技术社区  · 14 年前

    有没有一个通用的规则可以用来确定这一点?例如:

    int i = 10;
    while (i > 1 ) {
      if (i%2 == 0) i = i/2;
      else i = 3*i - 1;
    }
    
    4 回复  |  直到 14 年前
        1
  •  13
  •   aaronasterling    14 年前

    这就是 halting problem

    特别是,如果有这样一个算法,那么 collatz conjecture ,与您的问题中的函数相关,将是微不足道的(或者至少容易得多)。

        2
  •  1
  •   JoshD    14 年前

    你可能指的是停车问题。简而言之,没有通用的方法来确定程序是否会停止。退房 this article

        3
  •  1
  •   Vatine    14 年前

    一般来说,“不”。正如其他人所说,以你的具体例子,它可以被证明不会终止,因为 i 只有当 是偶数(或如果

        4
  •  0
  •   Anderson Green    6 年前

    有几种方法 termination analysis total functional programming languages 仅限于可证明的停止程序。

    推荐文章