Rozpatrzmy poniższy, prosty program w języku C/C++:
#include <stdio.h>
int increment(int n)
{
return (n<100000) ? increment(n+1) : n;
}
int main()
{
int a=increment(1);
printf("%d", a);
}
Program powinien dokonać wielokrotnego wywołania funkcji increment przez rekurencję, która wykonuje się tak długo, aż wartość zmiennej n nie będzie równa 100000 (i taka liczba ma być wypisana). Niestety, tuż po uruchomieniu programu zwracany jest jedynie błąd -1073741571 (0xC00000FD). Tego problemu nie ma, gdy w warunku zamiast wartości 100000 jest liczba mniejsza od 65144, np. return (n<50000) ? increment(n+1) : n; (program wypisuje poprawnie 50000). Gdy zmienimy argument funkcji increment na 2, najwyższą porównywaną liczbą będzie 65144, gdy będzie to 3 - 65145 itd.
W czym tkwi problem?