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?