Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Récursion | Fonctions de Récursion et Lambda
Tutoriel sur les Fonctions Python

book
Récursion

La récursion en Python se produit lorsqu'une fonction s'appelle elle-même. C'est une technique utile pour résoudre des problèmes complexes en les décomposant en parties plus petites. Les éléments clés de la récursion sont le cas de base (la condition d'arrêt) et le cas récursif (où la fonction s'appelle elle-même).

def print_message(message, times):
if times > 0:
print(message)
print_message(message, times - 1)

# Function call
print_message("Hello, Recursion!", 3)
1234567
def print_message(message, times): if times > 0: print(message) print_message(message, times - 1) # Function call print_message("Hello, Recursion!", 3)
copy

Passons étape par étape en revue le fonctionnement de ce programme récursif :

  1. Vérification de la condition : si times > 0, la fonction continue son exécution. Dans ce cas, times = 3, donc la condition est vraie ;

  2. Affichage du message : la fonction affiche "Hello, Recursion!" ;

  3. Appel récursif : la fonction s'appelle elle-même avec times - 1 ;

  4. Répétition : ce processus se poursuit jusqu'à ce que times soit égal à 0 ;

  5. Fin : lorsque la condition times > 0 n'est plus vraie, la récursion s'arrête et le programme se termine.

Résultat : Le message "Hello, Recursion!" est affiché trois fois.

Tâche

Swipe to start coding

Complétez le code pour générer des mots de passe de manière récursive. Le mot de passe doit être aléatoire et composé de lettres (à la fois majuscules et minuscules) et de chiffres. La fonction doit générer le nombre spécifié de mots de passe, chacun ayant une certaine longueur. Remplissez les espaces (___) dans le code:

  1. Vérification de la longueur du mot de passe : dans le premier espace, vérifiez si la longueur du mot de passe actuel (current_password) a atteint la longueur spécifiée (length). Si c'est le cas, affichez le mot de passe et passez à la génération du suivant.

  2. Appel récursif : dans le deuxième espace, appelez la fonction generate_passwords avec des paramètres mis à jour, en diminuant le nombre de mots de passe de 1 (count - 1).

Solution

import random
import string

def generate_passwords(length, count, current_password=""):
if count == 0:
return

if len(current_password) == length:
print(current_password)
generate_passwords(length, count - 1)
return

all_characters = string.ascii_letters + string.digits
random_char = random.choice(all_characters)
generate_passwords(length, count, current_password + random_char)

generate_passwords(8, 10)

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 1
import random
import string

def generate_passwords(length, count, current_password=""):
# If the number of passwords to generate is 0, stop
if count == 0:
return

# If the current password has reached the required length, print it
if ___(___) == length:
print(current_password)
# Generate the next password, decreasing the remaining count
___(length, count - 1)
return

# Add a random character from the set `(digits, letters)`
all_characters = string.ascii_letters + string.digits
random_char = random.choice(all_characters)
generate_passwords(length, count, current_password + random_char)

# Call the function to generate 10 passwords of length 8
generate_passwords(8, 10)

Demandez à l'IA

expand
ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

some-alt