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