Lors de l'exécution d'une fonction récursive simple (somme de n entiers consécutifs), la valeur max de n est 992 bien que la taille de la pile soit 1000. Pour n>992, python affiche recursion error. Je voudrais savoir pourquoi la fonction ne peut pas accepter 1000 comme valeur max de n. Est ce qu'il y a d'autres éléments qui sont stockés dans la pile autres que les appels récursifs ce qui limite la taille de n à 992.
Pour gérer l'appel de fonction, python a besoin d'ajouter quelques appels supplémentaires lui aussi...
Si dans cette fonction récursive, on fait appel à une ou des autres fonctions, ça risque aussi des débordements sur la pile.
Je suppose que tu n'as pas le choix d'utiliser la récursivité pour des raisons pédagogiques, mais python préfère de loin la méthode itérative, et si tu peux faire une adaptation ça sera sans doute moins risqué quand à l'exécution de ton programme.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Lors de l'exécution d'une fonction récursive simple (somme de n entiers consécutifs), la valeur max de n est 992 bien que la taille de la pile soit 1000. Pour n>992, python affiche recursion error. Je voudrais savoir pourquoi la fonction ne peut pas accepter 1000 comme valeur max de n. Est ce qu'il y a d'autres éléments qui sont stockés dans la pile autres que les appels récursifs ce qui limite la taille de n à 992.
La taille de la pile peut être monitorée avec le module inspect et elle est déjà à 1 avant tout appel. Je dirais que lorsque cette valeur atteint 1000, une exception est levée.
ce qui pourrait être intéressant, serait de pouvoir le justifier en montrant un code exemple
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Je pense qu'il y a d'autres informations sont stockées dans la pile ce qui justifie le fait d'avoir un nbre inférieur à 993 d'appels récursifs
Difficile de spéculer là-dessus si tu ne donnes pas ton code complet, ton implémentation de Python (il peut-même y avoir des variations entre la même version de CPython) et ta version de Python.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Le Tout est souvent plus grand que la somme de ses parties.
Découverte Python Doc Tkinter Les chaînes de caractères
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Découverte Python Doc Tkinter Les chaînes de caractères