The Python Game Book

code games. learn Python.

User Tools

Site Tools


Sidebar

Navigation

indexmenu_n_9999 Start
msort nsort navbar

fr:glossaire:r:recursivite

Récursivité

récursivité graphique (effet Droste). Source: Wikipedia On appelle récursivité la répétition d'un objet à l'intérieur de lui-même. En programmation, une fonction récursive est une fonction qui fait appel à elle-même.

Voici quelques fonctions récursives classiques, comme une fonction qui calcule la factorielle1) d'un nombre:

def factorielle(n):
   if n == 1:
      return 1
   else:
      return n * factorielle(n-1)

Pour calculer la factorielle de -par exemple- l'entier 5 (écrit “5!”) vous donnez l'entier 5 en paramètre à la fonction factorielle ci-dessus:

print factorielle(5)

La récursivité apparaît également dans l'imagerie, comme cette publicité pour le cacao Droste (cf. L'effet Droste): Une femme portant un paquet de cacao sur lequel est imprimé l'image d'une femme portant un paquet de cacao sur lequel est imprimé l'image d'une femme portant un paquet de cacao…

fonction récursive avec le module graphique turtle

Vous pouvez utiliser le module turtle de python pour générer de beaux motifs comme des arbres avec quelques lignes de code:

un arbre dessiné par turtle et une fonction récursive

import turtle as t

def y(length=100):
    """ peint une branche d'arbre avec deux branches, comme un Y"""
    if length < 10:
           return       # échappe la fonction
    t.fd(length)        # peint la grosse branche de l'arbre
    t.left(30)          # s'oriente vers la gauche pour la première branche dérivée de la parente
    y(length * 0.6)      # crée une plus petites branche, de deux tiers la longueur de la branche parente
    t.right(60)         # s'oriente vers la droite pour la seconde branche dérivée de la parente
    y(length * 0.6)      # crée la seconde petite branche
    t.left(30)          # s'oriente vers le point de départ des petites branches
    t.fd(-length)       # revient au point de départ des petites branches
    return              # quitte la fonction, retourne à la suite du programme

# appel de la fonction
y(200) # crée un arbre dont la première branche mesure 200 pixels de longueur

1)
un entier multiplié par tous les entiers inférieurs à lui-même et supérieurs à zéro. Exemple: 5! = 5 x 4 x 3 x 2 x 1 = 120
fr/glossaire/r/recursivite.txt · Last modified: 2014/01/09 11:07 (external edit)