Termination: Beispiel

Hält dieses Programm? Nach wievielen Schritten?

int main () {
  stack<int> s;
  s.push (4); // oder 5 oder ...
  for (int k = 1; ! s.empty(); k++) {
    int top = s.top (); s.pop ();
    if (top > 0) {
      for (int j=0; j<k; j++) {
        s.push (top - 1);
      }
    }
  }
}



Johannes Waldmann 2005-06-21