Termination: Beispiel

Termination von Programmen ist schwer (genauer: unentscheidbar)


import java.util.Stack;
void dauert_lange (int start) {
  Stack<Integer> s = new Stack<Integer> ();
  s.push (start); 
  for (int k = 1; ! s.empty(); k++) {
    int top = s.pop ();
    if (top > 0) {
      for (int j=0; j<k; j++) {
        s.push (top - 1);
} } } }

Hält dauert_lange(4)? Nach wievielen Schritten?



Johannes Waldmann 2006-06-26