in environments with limited resources, and to fail more gracefully when encountering runaway recursions