Search code examples
algorithmtermination

How do I check if a program terminates?


Is there a general rule that can be used to determine this? E.g:

int i = 10;
while (i > 1 ) {
  if (i%2 == 0) i = i/2;
  else i = 3*i - 1;
}

Solution

  • This is the halting problem. There does not exist an algorithm capable of doing what you ask.

    In particular, if there was such an algorithm, then the collatz conjecture, related to the function in your question, would be trivial (or at least a lot easier).