Designed by Derf !
163 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter





   

La programmation récursive (ou récurrence) (1/4)

Technique de programmation





AllJinx
Vous êtes sans doute déjà tombé sur un bout de code contenant une fonction qui s'appelle toute seule. Cette technique permet d'effectuer des séquences de traitements fastidieux avec une seule et unique fonction.


Principe - Exemple 1 - Avertissement - Exemple 2 - Questions


Définition et utilité

La programmation récursive est une technique algorythmique applicable dans n'importe quel langage de programmation (du moment que l'on peut faire des fonctions bien sur). Elle permet d'effectuer des traitements, souvent programmables aussi avec des boucles (while et for) mais de façon beaucoup plus légère à l'exécution qu'avec celles-ci. Bien maîtrisée, cette méthode offre des possibilités très utiles dans certains cas. Ceci-dit, dans un souci de clarté, je m'efforcerai de donner des exemples assez simples afin de bien cerner le problème.


Principe

Le principe est relativement simple mais assez délicat à mettre en oeuvre puisque, comme dans la programmation avec des boucles, si vous vous loupez quelque part, vous risquez de générer une boucle infinie et donc : GROSSE ET PITOYABLE PLANTADE au grand bonheur d'IE !!!

Méthode récursive

<script language="JavaScript"><!--

   function fac(nombre) {
      // Condition de sortie
      if(nombre<2) return 1
      // Appel récursif
      else return nombre * fac(nombre-1)
   }

   // Appel initial de la fonction
   document.write(fac(10))

//--></script>

Méthode itérative

<script language="JavaScript"><!--

   function fac(nombre) {
      result = 1
      while(nombre>1) {
         result *= nombre
         nombre --
      }
      return result
   }

   // Appel de la fonction
   document.write(fac(10))

//--></script>

Ce script affiche 3628800 soit la factorielle de 10 (10!=1x2x3x4x5x6x7x8x9x10)

Pour expliquer le fonctionnement, je vais utiliser un autre exemple simple mais valide uniquement pour Internet Explorer puisqu'il fait intervenir le filtre Alpha du navigateur.

Le but sera de faire apparaitre une image avec un effet de fondu programmé en JavaScript. Rien de plus simple, il suffit d'incrémenter la valeur propriété de l'Alpha du filtre. Mais si nous nous contentons de faire celà dans une boucle, nous n'aurons aucune temporisation et donc l'image ne s'affichera que quand la boucle sera finie : Bidon. Il nous faut donc passer par un setTimeout.

Je tiens à rappeler que ce script peut être réalisé de manière beaucoup plus simple, mais qu'ici notre but est de montrer le fontionnement de la récursivité alors ne bombardez pas mon mail svp :)

La programmation récursive impose trois étapes importantes :
1 - Initialisation (exterieure à la fonction)
2 - Traitement
3 - Test condition de sortie ; Si non, retour à étape 2 ; Si oui, rien du tout.

Si vous en oubliez une, il est fort probable que votre navigateur vous manque de respect.


Pour pouvoir écrire dans ce forum, identifiez-vous !

  v1.3p © ASP-PHP.net 2002  

AllJinx le 14/01/2003 (39 594 hits)
Didier 11 logiciels Microsoft GRATUITS dont Visual Studio 2008 Pro,
SQL Server 2005, Expression Studio, Windows Server 2003, Office project Pro, etc... !!!
Au fil des news  
Magazines - Le n°108 de Programmez est disponible
Adobe - Téléchargez gratuitement le dossier spécial Adobe
Magazines - Le N°107 de Programmez est disponible.
Créer une Feature d'administration sous SharePoint - Comment créer un composant d'administration
Dans les précédents articles, nous avons évoqué la création de pages personnalisées dans ...
PHP - Afficher une date : multilangage et relative
Agenda - Inscrivez-vous au WygDay [Wygwam] le 22/5 à Lille
Sync Framework - Introduction au MS Sync Framework - Installation
Microsoft, lors du Keynote du TechEd Europe 2007, a annoncé la mise à disposition d'un nouveau ...
Reporting Services et SharePoint - Utiliser SharePoint comme source de données
Dans un précédent article, nous avons pu apprendre comment créer un rapport utilisant une source de ...
JavaScript - Affiche un calendrier sous une zone de saisie
Adobe - Adobe lance la version bêta publique de Photoshop
Microsoft Expression Web - Premier contact
Je suis revenu des Techday's 2008 avec une idée en tête. Je voulais savoir comme travailler avec ...
PHP & MySQLi - de Hello / Sector One
Hello de Sector One propose un article avec PHP et MySQLi, la nouvelle extension de MySQL
VBScript - Zip de fichiers automatique et efface la source
Dreamweaver CS3 + Php + Mysql - Trucs et Astuces - Part 4 -
Pour changer, deux nouvelles astuces pour vous . Alternate Colors. Inscription et envoi de mail
Magazines - Le N°106 de Programmez est disponible.
Divers - Zone Webmasters
PHP5 - Classe de connexion à MySQL
Agenda - 20/03 : Boostez vos applis PHP-Windows Server 2008
Créer un thème graphique pour WSS V3 - Comment créer un thème graphique pour WSS V3
Nous avons vu dans un précédent article comment créer une master page. Il peut parfois être ...
Les plans de maintenance et SQL Server 2000 - Installer un plan de maintenance sous SQL Server
Dans le cadre de la gestion d'instances SQL Server 2000 hébergeant SharePoint, il est intéressant ...
PHP - PHP et MYSQL - MySQLi - PDO
Jeux de l'été (et de 4) - Un petit jeu de Mastermind
C'est reparti pour un tour... Il y avait longtemps que je n'étais pas venu vous proposer un petit ...
Migration WSS avec un Site Template spécifique - Migration WSS avec un Site Template spécifique
Les précédents articles nous ont permis de voir les différents modes de migration de WSS V2 vers ...
DataBase Upgrade de WSS V2 vers WSS V3 - Upgrade de WSS V2 vers WSS V3 par la DataBase
Parmi les trois modes de migration de Windows SharePoint Services V2 vers WSS V3, nous avons vu les ...
Création de module DotNetNuke en C# - Source : Jerome Fortias sap-integration.net
Je vous propose un nouvel article consacré au développement de modules pour DotNetNuke en C#. Il ...
ASP-PHP.net - On sera aux MS TechDays 2008 ! et vous ?
Créer son modèle de rapports SSRS - Créer son modèle de rapports Reporting Services
Après la création du modèle de style pour Reporting Services, il est souhaitable aussi d'avoir un ...
PHP - publipostage sur rtf préformaté avec mysql
Créer son style de rapports SSRS - Créer son style de rapports Reporting Services
Lorsqu'on travaille avec Reporting Services pour développer ses rapports, on veut très souvent ...
.NET - C#2 et ASP.NET 2.0 - Développez un projet de A à Z
SharePoint - MOSS 2007 - De l'intégration au développement
PHP - PHP 5 MySQL 5 AJAX
Découverte de Visual Studio 2008 -
Microsoft a annoncé, lors du TechEd'07 organisé à Barcelone, la mise à disposition de la release de ...
Adobe - Photoshop Elements 6 Version MAC
Adobe - Adobe sur Intergraphic 2008
Reporting Services et données XML - Utiliser des données XML dans Reporting Services
Une demande récente que j'ai reçue : Comment utiliser des données provenant d'un flux XML dans ...
Dreamweaver CS3 + XML + Ajax - Création d'une région détail
Dans cet article, je vais vous montrer comment utiliser la technique région détail, avec Spry
PHP - Jolie arborescence dynamique
Magazines - Le N°104 de Programmez est disponible
PHP - PhPBB 3.0.0 !!!
Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
v3 © Didier 2003   
 

Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
 MVP The Inquirer FR El Roubio ASP-magazine DotNet Project Codes Sources Groupes Utilisateurs Microsoft TechNet CodePPC Wygwam