Aby poznać limit wywołań rekurencyjnych w C++, wypróbowałem tę funkcję!Limit wywołań rekursywnych w C++ (około 5000)?
void recurse (int count) // Each call gets its own count
{
printf("%d\n",count);
// It is not necessary to increment count since each function's
// variables are separate (so each count will be initialized one greater)
recurse (count + 1);
}
ten program zatrzyma się, gdy liczba jest równa 4716! więc limit wynosi zaledwie 4716 !! Jestem trochę zdezorientowany !! dlaczego program kończy się z egzekwowaniem, gdy liczba jest równa 4716 !! PS: Wykonywany w Visual Studio 2010. dzięki
Bezgraniczna rekursja jest możliwa na niektórych celach. GCC obsługuje coś, co nazywa się "split stacks", co pozwala rosnąć stosom, * dyskretnie, * wypełniać dostępną pamięć. Zobacz http://gcw.gnu.org/wiki/SplitStacks –
Wiem, że był limit, ale zastanawiam się, co to za limit! Nie spodziewałem się, że stos eksploduje za mniej niż 5000 połączeń! Dziękuję za wyjaśnienie ! – satyres
Ciągle jest limit i nadal jest (o ile rozumiem) brak możliwości wykrycia końca stosu. Używając stosu oprogramowania, istnieje przynajmniej sposób na wykrycie, kiedy skończy się stos ... –