Photo de couverture | CSDN télécharger la Chine visuelle
Auteur | programmeur Adny
Zebian | Xu Veyron
Produit | camp de base de la technologie AI (ID: rgznai100)
Cet article décrit l'utilisation de son exemple avancé d'une fonction récursive de Python, maintenant pour tout le monde à part, mais aussi d'être une référence. Avec un coup d'oeil.
récursion
Est une fonction / procédure / phénomène sous-programme rentrante en run-off procédure elle-même appelle généré directement ou indirectement. Dans la programmation informatique, la récursion se réfère à un processus: la fonction elle-même référence en permanence, jusqu'à ce que la référence d'objet est connu.
Utilisez récursivité pour résoudre le problème, la pensée claire, moins de code. Cependant, dans les langues de haut niveau ordinaire (comme C, langage Pascal, etc.) en utilisant un algorithme récursif à consommer plus d'espace pile, de sorte que lorsque la taille de la pile est limitée (par exemple, une programmation en mode système ou noyau embarqué), doivent être évités. Tout algorithme récursif peut être réécrite en son équivalent algorithme non récurrent.
(Le terme est pas de Baidu, ne peut pas lire la normale, une conversation)
Voici compréhension personnelle de l'auteur: Récursion est d'appeler vos propres fonctions au sein de la fonction est appelée récursive.
Vous ne pouvez pas lire? Quelques exemples de l'image!
Un oignon est une couche d'un oignon avec des oignons.
Récursion est cuit à la vapeur des petits pains farcis, le pain est sa limite.
Vraiment image! Un peu Écarter ... Plus près de chez nous, nous allons comprendre récursive récursion!
Exemples
# Appel direct vous:
def func:
print ( 'de func')
func
func
# Appel indirect leur propre
def foo:
print ( 'foo')
bar
bar DEF:
print ( 'de bar')
foo
foo
# Mise en uvre récursive:
âge def (n):
si n == 1:
retour 18
âge de retour (n-1) 2
impression (âge (5))
# Âge (5) = âge (4) +2 première entrée
# Âge (4) = âge (3) 2 dans la deuxième
# Âge (3) = âge (2) 2 dans la troisième
# Age (2) = âge (1) 2 entrant dans la quatrième
# Age (1) = 18 dans le cinquième, la condition de terminaison finale est déterminée
# Âge (n) = âge (n-1) 2 #n > Une condition de terminaison récursive
# Age (1) = 18 n = # 1 est égale aux conditions de terminaison
retours en arrière et récursion récursive
retour : Comme le récursive haut démantèlement récursive à chaque fois que la base d'une prochaine exécution effectuée, appelée récursive.
Retour: Dans la condition de terminaison est rencontré, le dernier pour revenir à un niveau de la valeur retournée, et rappelé.
Exemples #
l =
recherche def (l):
pour objet l:
si le type (élément) est la liste:
recherche (article)
autre:
print (article)
recherche (l)
Le code exemple
factoriel:
def fait (n):
si n == 1:
return 1
retour n * fait (n -1)
Ce qui précède est la réalisation d'une classe de fonction récursive, nous devons essayer.
> > > fait (1)
1
> > > fait (5)
120
> > > fait (100)
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
Il peut être un peu ignorant, jetez un oeil sur le processus de calcul, il:
=== > fait (5)
=== > 5 * fait (4)
=== > 5 * (4 * fait (3))
=== > 5 * (4 * (3 * fait (2)))
=== > 5 * (4 * (3 * (2 * fait (1))))
=== > 5 * (4 * (3 * (2 * 1)))
=== > 5 * (4 * (3 * 2))
=== > 5 * (4 * 6)
=== > 5 * 24
=== > 120
numéro fibonacci :
def fib (n):
si n < 2:
retour n
autre:
fib de retour (n -1) + fib (n -2)
Ce n'est pas difficile, ou aller à l'exemple suivant!
Tour de Hanoi :
def hanoti (n, x1, x2, x3):
si (n == 1):
print ( 'mouvement:', x1, « - > », X3)
retour
hanoti (n-1, x1, x3, x2)
print ( 'mouvement:', x1, « - > », X3)
hanoti (n-1, x2, x1, x3)
Haha, certainement ne comprennent pas, bien, jetez un oeil à l'organigramme, vous verrez soudainement la lumière -
facile à obtenir le service de messagerie SpringBoot
piratage moins de ressources? Le rapport des personnes encore « forte aux yeux » contribuent de manière significative au modèle de la PNL
Soul cadres App arrêté, conduit à des rapports malveillants que les produits concurrents sur l'étagère
ère Ethernet Square: les 10 prochaines années, ETH ou prix par cinq facteurs entraîné principaux
algorithmes de clés PyTorch soupçonnés infraction, Facebook est mis en examen
2020, la dernière version de questions face Redis 68, 20000 mots à sec, et rapidement couvert la roue de secours!