Press "Enter" to skip to content

Pourquoi la récursivité est-elle rarement utilisée ?

Le fait est que la récursivité est rarement l'approche la plus efficace pour résoudre un problème, et l'itération est presque toujours plus efficace. En effet, il y a généralement plus de surcharge associée aux appels récursifs en raison du fait que la pile d'appels est si fortement utilisée pendant la récursivité.

Q. Pourquoi les fonctions récursives sont-elles mauvaises ?

Un inconvénient de la récursivité est qu'elle peut prendre plus de place qu'une solution itérative. La constitution d'une pile d'appels récursifs consomme temporairement de la mémoire et la pile est limitée en taille, ce qui peut devenir une limite à la taille du problème que votre implémentation récursive peut résoudre.

Q. Quand peut-on utiliser la fonction récursive ?

Les gens n'utilisent la récursivité que lorsqu'il est très complexe d'écrire du code itératif. Par exemple, les techniques de parcours d'arbres comme le préordre, le postordre peuvent être rendues à la fois itératives et récursives. Mais généralement, nous utilisons récursif en raison de sa simplicité. Voici un exemple simple : combien d'éléments dans un ensemble.

Q. La récursivité est-elle réellement utilisée en programmation ?

Chaque fois que vous compilez du code (ou interprétez) du code, la récursivité est utilisée. Le code lui-même est fondamentalement constitué de données imbriquées arbitrairement qui sont transformées en structures arborescentes lorsqu'elles sont analysées, et la récursivité est le seul moyen de traiter des données imbriquées arbitrairement.

Q. Pouvez-vous utiliser les CTE dans MySQL ?

Dans MySQL, chaque requête génère un résultat ou une relation temporaire. Afin de donner un nom à ces jeux de résultats temporaires, CTE est utilisé. Un CTE est défini à l'aide de la clause WITH. En utilisant la clause WITH, nous pouvons définir plusieurs CTE dans une seule instruction.

Q. Existe-t-il des fonctions stockées récursives dans MySQL ?

Mais j'obtiens toujours 1424 Les fonctions stockées récursives et les déclencheurs ne sont pas autorisés. – tirithen 20 septembre 10 à 14:01 MySQL n'autorise pas les fonctions récursives, même si vous définissez max_sp_recursion_depth. Il autorise jusqu'à 255 récursions dans une PROCÉDURE si vous définissez max_sp_recursion_depth.

Q. Pourquoi les procédures stockées, les fonctions et les déclencheurs MySQL sont-ils mauvais ?

Les procédures stockées, les fonctions et les déclencheurs MySQL sont des constructions tentantes pour les développeurs d'applications. Cependant, comme je l'ai découvert, il peut y avoir un impact sur les performances de la base de données lors de l'utilisation de routines stockées MySQL.

Q. La table commune récursive est-elle une restriction dans MySQL ?

Il s'agit d'une restriction MySQL levée dans MySQL 8.0.14, et non d'une restriction du standard SQL. Pour des considérations de syntaxe supplémentaires spécifiques aux CTE récursifs, consultez Expressions de table communes récursives . Une expression de table commune récursive est une expression ayant une sous-requête qui fait référence à son propre nom. Par exemple:

Q. Comment fonctionne la sous-requête CTE récursive dans MySQL ?

La sous-requête CTE récursive comporte deux parties, séparées par UNION [ALL] ou UNION DISTINCT : Le premier SELECT produit la ligne ou les lignes initiales pour le CTE et ne fait pas référence au nom du CTE. Le deuxième SELECT produit des lignes supplémentaires et des récursions en se référant au nom CTE dans sa clause FROM.