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?