Trucsweb.com

Trucsweb.com

ASP

Introduction aux Fonctions

RDFFav

Fonctions récursives - Optimiser vos calculs

Une fonction récursive est une fonction qui s’appelle elle même. Ce genre de fonction peut augmenter grandement l’efficacité et la rapidité de votre code. MAIS ATTENTION, l’utilisation d’une telle fonction, si elle est mal gérée, peut faire en sorte qu’elle n’arrête jamais dans une boucle sans fin.fonction, paramètre, procédure, redondant, récursif, factoriel, boucle sans fin, mathématiqueFonctions récursives - Optimiser vos calculs

Récursion (fractal)

Ah, le gros mot! Récursion! L’idée est pourtant toute simple, un processus qui se répète lui-même. Et le but, simplifier jusqu’à augmenter dans certains cas l’efficacité et la rapidité d’exécution du code. Au grand bonheur des puriste. Mais voilà, la récursion rebute, elle a un petit quelque chose de magique! Un concept simple sur papier difficile à reproduire en pensé qui s’apparente souvent à l’illumination! C’est aussi un processus qui requiert son propre système de pile (stack) en mémoire jugé par certains trop gourmand pour la peine! Car en principe, tout algorithme récursif peut être reproduit de façon itérative. C’est à dire avec la bonne vielle boucle.

Récursif versus itératifs (Mise à jour 2014)

Aussi vieux que l’ordinateur lui-même, cette polémique n’a plus aucune raison d’être. On a même plusieurs cœur maintenant ; -) Les machines, les systèmes d’exploitation et les compilateurs sont tellement puissant aujourd’hui que que l’argument tient difficilement la route. La philosophie du Web où chaque poste exécute, interprété et manipule des données partagé en est un bon exemple. Le Javascript ou carrément le XSL, basé sur la récursion.

Reste à construire l’algorithme. Ou plutôt à déconstruire le problème! À l’instar du fractal, la fonction récursive est avant tout une solution à un petit problème! Comme dans l’exemple de l’arbre binaire, le problème est « le nœud et ses deux enfants ». Et la solution s’appliquera à chaque nœud de l’arbre, à l’infini s’il le faut.

Une fonction récursive est une fonction qui s’appelle elle même. Dans sa plus simple expression elle s’exécutera en boucle à l’infini. Il faut prévoir en sortir et c’est ici que ça se corse! Peut importe la méthode, une condition à la récursion, un test de condition... là n’arrête pas la récursion pour autant! En effet les processus en cours, dit « actif », stockés dans une pilè (stack) dédié aux fonctions récursives seront part Les processus en cours reviens en arrière, processus

On appelle une fonction avant même d’avoir terminé ses instructions. Si le rappel est la dernière instruction, on dit qu’elle est une « fonction récursive de queue (tail). Basées sur la pile, les fonctions récursives emmagasine en empilant l’"état actif" d’une passe (boucle) d’une fonction. une au dessus de l’autre et alimente à partir de celle-ci la pile (stack) de la mémoire.

Voici un exemple à l’aide du bon vieux problème factoriel.
En mathématique, la valeur 
factorielle d’un nombre positif n est représenté par cette formule : n! 
= n . (n-1) . (n-2) . (n-3) ... 1

C’est-à-dire que le factoriel de notre nombre n est le produit de ce nombre, n, avec tous les nombres qui lui sont plus petit, jusqu’à 1. Donc, 5! c’est en fait 5x4x3x2x1.La deuxième forme est dite une forme récursive, car elle utilise sa propre opération pour se définir. Voici ces deux formes de la fonction "factoriel" en code ASP.

La solution simple avec le nombre 5

<%
  Response.Write Factoriel (5)

  Function Factoriel ( intNombre )
    Dim intCount, intFactoriel

    intFactoriel = 1
    For intCount = intNombre To 1 Step -1
       intFactoriel = intFactoriel * intCount
    Next

    Factoriel = intFactoriel
  End Function
%>

Solution récursive

<%
  Response.Write FactorielRecursif (5)

  Function FactorielRecursif (intNombre )
    If intNombre <= 1 Then
      FactorielRecursif = 1
    Else
       FactorielRecursif = intNombre * FactorielRecursif (intNombre - 1 )
    End If
  End Function
%>

Explication de la forme récursive : SI le nombre "intNombre" est plus petit ou égal à 1, alors la fonction retournera 1 SINON la valeur retournée sera le produit du nombre "intNombre" avec la valeur retournée par la fonction pour le nombre "intNombre -1".

Résultat: 5! = 5 . (5-1) . (5-2) . (5-3) . (5-4)

Simplifié: 5! = 5 . 4 . 3 . 2. 1 = 120

Django (Oznog) Blais
Dernière mise à jour :

Commentaires

Ajouter un commentaire
Votre adresse de courriel ne sera pas publiée. * L'astérisque indique les champs obligatoires.
Votre évaluation du tutoriel

8/10 sur 1 revues.
       Visites : 6901 - Pages vues : 14433
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@