quelle est la profondeur de recursion maximale ?? [C] - C - Programmation
Marsh Posté le 19-04-2004 à 03:42:22
La taille de la pile, la quantité de mémoire disponible.
Quelle limite tu atteinds en premier dépends de ton systeme.
Sinon si tu programmais en Caml avec de la recursion terminale tu n'aurais pas ce probleme.
En regle general en C on essaie de limiter le nombre d'appels récursifs: La programmation itérative a exactement les memes "capacités" que la programmation récursive.
LeGreg
Marsh Posté le 19-04-2004 à 09:20:15
LeGreg a écrit : Sinon si tu programmais en Caml avec de la recursion terminale tu n'aurais pas ce probleme. |
Qu'est-ce que c'est, la récursion terminale?
Marsh Posté le 19-04-2004 à 10:10:46
Ace17 a écrit : |
C'est quand l'appel de la récursion est la dernière instruction de la fonction.
Code :
|
Marsh Posté le 20-04-2004 à 08:06:14
Ok merci; Et pour mettre en relation avec ce qu'a dis LeGreg, ca veut donc dire qu'on peut libérer la pile au fur et a mesure?
Marsh Posté le 20-04-2004 à 08:10:55
c'est pas possible. la récursion c'est bien dans une certaine mesure. mais pas ici. (surtout qu'avec 32bits, tu va pas plus loin que 17!)
dérécursifie, si tu n'arrives pas à passer ton algorithme en itératif, tu peux toujours ruser en utilisant toi même une pile d'arguments dans le tas.
Marsh Posté le 20-04-2004 à 08:13:48
sinon pour avoir une telle profondeur, tu fais quoi ? t'es sur d'avoir rien foiré ou tu réinventes ackerman ?
Marsh Posté le 24-04-2004 à 12:00:19
J'ai déjà fait de la dérécursivité pour parcourir l'arborescence d'un réseau local, de disque physique et de la paletisation. Tout ça car il y avait des problèmes avec VC++ et Windows.
Tous les algos sont dérécursivables...
Marsh Posté le 24-04-2004 à 12:26:45
christophe_d13 a écrit : Tous les algos sont dérécursivables... |
c'est quoi alors la solution pour ackerman ?
Marsh Posté le 24-04-2004 à 12:34:07
Posté par JHelp sur un autre forum (developpez.com)
Code :
|
Ok, le code ne marche pas correctement.
Mais c'est la seule solution quand on ne pas faire de récursivité : Utiliser un stockage de type pile.
Marsh Posté le 24-04-2004 à 12:39:50
oui ben voilà, avec une pile on fait tout, mais c'est la complètement équivalent avec la pile d'appel ...
Marsh Posté le 24-04-2004 à 12:43:54
Taz> Tout à fait, mais dans ce cas, on maîtrise complètement la pile, donc sa taille. C'est pas l'os qui la gêre à notre place. C'était le problème de olib.
70000 appels récursifs... sachant qu'à chaque appel il a un stockage d'un grand nombre de données pas directement liées à l'algo.
Marsh Posté le 24-04-2004 à 12:45:00
oui, et ça risque quand même de sérieusement poutrer niveau efficacité
Marsh Posté le 19-04-2004 à 03:39:23
mon programme plante apres environ 70 000 appels recursifs.
je me demandais si il y avait une limite sur la profondeur de récursion et si oui, laquelle...
merciiiiiii