Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α13.2 · Γιατί η αναδρομή πρέπει να τελειώνει;

Διάλεξη 13, διαφάνεια 27 · Δυσκολία ★☆☆ · short-answer · Κεφάλαια: 13, 11

Είχαμε πει «η αναδρομή πρέπει να τελειώνει». Γιατί;

void recurse() {
  recurse();
}

int main() {
  recurse();
  return 0;
}
$ gcc -o rec rec.c
$ ./rec
Segmentation fault

Υπόδειξη

Σκεφτείτε τι μπαίνει στη στοίβα σε κάθε κλήση της recurse και πότε αφαιρείται. Η στοίβα έχει πεπερασμένο μέγεθος (δείτε ulimit -s).

Αριθμός στον οδηγό: Α13.2 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec13-infinite-recursion · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec13-infinite-recursion.html · Markdown (GitHub)