53 votes

Profondeur de récursivité C# - Jusqu’où pouvez-vous aller

Y a-t-il un contrôle sur la mesure dans laquelle vous pouvez appeler quelque chose de manière récursive?

À partir d’un programme de test de base, j’obtiens une profondeur de récursivité d’un peu plus de 18k

qui dépend de la taille de la pile....

Existe-t-il un moyen de configurer un morceau de mémoire (peut-être un thread) avec une pile massive pour augmenter la profondeur de récursivité ?

22voto

Jonathan Wood Points 26443

Je pense que vous risquez des problèmes ici. Il est difficile de déterminer exactement la quantité de pile qu’un algorithme récursif utilisera. Et, si vous en êtes au point où il y a une question sur s’il y en aura assez, je chercherais une autre approche.

La plupart des algorithmes récursifs pourraient être réécrits pour ne pas être récursifs. Vous pouvez ensuite allouer autant de mémoire que nécessaire et même récupérer gracieusement s’il n’y en a pas assez.

6voto

Brian Rasmussen Points 68853

La taille de pile par défaut est stockée dans l’en-tête PE.

Si vous générez le thread vous-même, Thread a un constructeur qui prend la taille de la pile comme paramètre.

Toutefois, la taille de pile .NET par défaut de 1 Mo devrait suffire pour la plupart des tâches, donc avant de la modifier, vous devez au moins examiner la tâche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X