fonctions récursives de pointe Python est pas difficile

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!

Carré 2,0 Ether, la fragmentation, le DAG, un aperçu de l'état de la chaîne de blocs de canal de liaison descendante ...... solution évolutive
Précédent
Computer Vision AI jeu d'outils OpenVINO , est un cadre d'apprentissage profond Top1 votre cur?
Prochain
Piraterie moins de ressources? Le rapport des personnes encore « forte aux yeux » contribuent de manière significative au modèle de la PNL
iOS version bêta microcanal du mode Diablo, a allégué les accusations malveillantes, les plates-formes sociales d'arrêt Âme d'exploitation partenaire, AWS pour lancer le système d'exploitation open s
article rapide des portraits et des utilisateurs de vidéo Web pour explorer l'application
Ma recommandation IDE nuage favori
TOP 3 problème de l'industrie informatique: « égal » est la source des problèmes majeurs dans de nombreux logiciels d'ingénierie de
langages de programmation modernes grand PK, en 2020, les développeurs de langage de programmation de sept se soucient
40 Entretien Data Mining Zhenti grande course
Ouvrir la police source n'a pas d'odeur? Tout ce que vous choisissez éclatez police rouge sur cinq GitHub
Pourquoi devrions-nous utiliser Flutter?
l'architecture hybride, les données ... Le bug de sécurité natif nuage sombre trop facile de provoquer un désastre
Facebook et faire des choses, les violations de la concurrence-accord a été mis en accusation, les technologies clés PyTorch doute Violation
Fun SpringBoot2.x des objets mis en cache | programme Force