Les fonctions récursives peuvent être utilisées lorsque la profondeur de la structure imbriquée n'est pas fixe. (Lors du traitement des données de fichier JSON, etc.)
S'appeler (fonction) dans une fonction. └ Littéralement "récursif", revenez à vous-même.
--Une condition de résiliation est requise.
python
def sum(n):
    #Conditions de sortie
    if n <= 0:
        return n
    
    #Appelez-vous(Fonction récursive)
    return n + sum(n-1)
Si n = 4, additionnez les nombres 4,3,2,1 dans l'ordre.
Résultat d'exécution de la fonction
sum(4)
#production
10
Si vous entrez un entier supérieur ou égal à 0
(1) La première chose à exécuter est n + sum (n-1)
(2) Après avoir entré une valeur numérique dans n, exécutez sum (n-1).
└ L'argument devient "n-1".
(3) Si n-1 est supérieur à 0, répéter «n + somme (n-1)».
Les données peuvent être obtenues à partir d'un tableau multidimensionnel en combinant une instruction if, une instruction for et une fonction récursive.
python
data0 = [1,[2]]
def number(arr):
    #Préparez une liste pour mettre le résultat
    result=[]
    
    #Ajouter au résultat s'il s'agit d'un entier
    if isinstance(arr, int):
        result.append(arr)
    
    #Traitement pour le type de liste
    if isinstance(arr, list):
        for brr in arr:
            #Fonction récursive. Résultat d'exécution(result)Ajouter
            result += number(brr)
    
    #Valeur de retour de la fonction
    return result
number(data0)    
#production
[1, 2]
Définissez une valeur de retour. * Faites attention à l'emplacement
python
data1 = [1,[2],[[3]],[[[[4]]]],[[[[5,6,7],8,9]]],10]
def number(arr):
    result=[]
    
    if isinstance(arr, int):
        result.append(arr)
    
    if isinstance(arr, list):
        for brr in arr:
            result += number(brr)
 
    return result
number(data1) 
#production
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]       
        Recommended Posts