Python >> Tutoriel Python >  >> Python

Fonction de puissance récursive :êtes-vous bloqué avec ce code Sololearn ?

Si vous apprenez Python avec l'excellente application Sololearn , vous pourriez vous retrouver avec cet extrait de code :

def power(x, y):
  if y == 0:
    return 1
  else:
    return x * power(x, y-1)
		
print(power(2, 3))

Quel est le résultat de cet extrait de code ? Et surtout, comment ça marche ? Ce petit guide vous le dira !

Le code crée une fonction qui renvoie x^y . Il exploite le concept de programmation important de la récursivité :il s'appuie sur une version plus simple du problème jusqu'à ce qu'il atteigne un cas trivial :y=0 . Nous appelons cela la récursivité cas de base .

Cas de base : Si l'exposant y est 0, la solution est 1 car tout nombre x pris à la puissance 0 vaut 1 par définition (voir section suivante).

Cas non-base : Si l'exposant y est supérieur à 0, la fonction power(x, y) renvoie le résultat de x * power(x, y-1) . Il s'appelle lui-même sur un problème légèrement plus facile. Dites, vous connaissez le résultat de power(x, y-1) —c'est-à-dire x^(y-1) . Vous pouvez maintenant obtenir x^y en multipliant le résultat le plus simple (x à la puissance y-1 ) avec x . Voici à quoi cela ressemble :x^(y-1)*x = x^y . Vous pouvez voir cette idée dans le graphique suivant :

Maintenant, vous pouvez voir comment le code se déroule :

  • Les variables x et y sont définies. Ils sont x=2 et y=3 .
  • Vérifiez si y = 0 , qui est False , donc vous entrez dans la branche else.
  • Dans la branche else, vous appelez la fonction elle-même et répétez cette vérification et ce calcul pour obtenir les étapes suivantes :
Step 0: x * (x^(y-1))
Step 1: 2 * (2^(3-1))
Step 2: 2 * (2^2)
Step 3: 2 * 4
Result: 8

Ainsi, la sortie de cet extrait de code est 8.

Pourquoi un nombre à la puissance zéro donne-t-il un ?

Si vous multipliez un nombre par un, le nombre reste le même. Par exemple, 1*x =x pour tout x . Cette propriété est appelée identité multiplicative . Tout nombre à la puissance zéro est un parce que c'est juste le produit d'aucun nombre, qui est l'identité multiplicative de 1. De même, le nombre d'identité de la somme est 0, donc la somme des aucuns nombres est le numéro d'identité de la somme 0.

Vidéo relative à la récursivité


Post précédent