0
votes

Comment appliquer cette fonction récursivement

J'ai donc reçu cette fonction aux , il est facile de comprendre. Quelle fonction cette fonction est-ce que bon nombre de chiffres sont supérieurs au premier élément d'un liste. xxx

et maintenant je veux faire une autre fonction qui utilise AUX récursivement pour chaque élément de la liste et voir qui renvoie le plus grand nombre. Mais je Je ne vois pas comment puis-je faire cela de manière récursive.


7 commentaires

Voulez-vous dire «utiliser la récursion» par récursif ? Pourquoi voulez-vous faire cela récursivement? Est-ce une partie de la tâche?


Oui, ça fait partie de la tâche


Quelle est la tâche? Le programme ne compte pas combien de chiffres sont supérieurs à ceux du premier, et cela ne compte pas combien de chiffres sont> = que le premier.


Quel est votre résultat attendu?


Dans cet exemple, mon résultat attendu est 3, car il y a 2 autres numéros supérieurs à 5, 7 et 8. Donc, Res démarrez-le sur 1 parce que nous comptons le nombre 5 aussi, 1 + 2 = 3


Mais 5 n'est pas supérieur à 5.


Cela peut aider à ajouter un pseudocode pour montrer ce que vous essayez d'atteindre. Je ne suis pas clair sur quel résultat que vous essayez d'atteindre. Regardez également iTertools , votre fonction AUX peut être réduite à quelques lignes à l'aide de ces fonctions.


3 Réponses :


0
votes

Cela a fonctionné pour moi: xxx


2 commentaires

Lorsque vous appelez la fonction, quel est votre "I"?


Donc, quand je définis à l'origine la fonction avec def aux (...) L'un des arguments est i - il s'agit de l'élément numéro dans list1 . Sur la ligne que j'ai commenté Récursion arrive ici Je sais que i à nouveau que j'ajoute 1 à cela. Par conséquent, la fonction s'appelle elle-même mais avec un i i .



0
votes

Je sais que ce n'est pas une partie de la question, mais je réécrireais la fonction comme ceci: xxx

examinons quelques exemples de récursivité pour faciliter la tâche. < p> somme de la liste: xxx

à l'aide d'une boucle, vous pouvez résoudre le problème facilement: xxx

si votre Tâche est de trouver le nombre maximum d'une liste de nombres positifs, il peut être exprimé de manière récursive comme ceci: xxx

par exemple: xxx

Maintenant, vous pouvez modifier la fonction pour ne pas trouver la valeur maximale, mais le résultat maximal de la fonction d'une valeur. xxx

Vous pouvez réécrire la fonction à Utilisez récursion queue : xxx

En savoir plus sur la récursion:

https://realpython.com/python-thinking-recursivement/ \ '

https://chrispenner.ca/posts/python-tail-recursion


0 commentaires

2
votes

Maintenant, je veux faire une autre fonction qui utilise Aux récursivement pour chaque élément de la liste et voir qui retourne le plus grand nombre. p>

Je comprends que vous pouvez être chargé de résoudre celui-ci de manière spécifiquement récursive, mais je ne vois pas le besoin. L'élément de votre liste qui retournera le plus grand nombre en utilisant la logique de votre fonction n'est que le nombre le plus bas. Ceci peut être trouvé avec la fonction min () code>. Vous pouvez ensuite renvoyer la longueur de votre liste moins une (si vous n'assumez aucun doublure) ou la longueur de votre liste moins la longueur d'une autre liste qui inclut vos articles les plus bas (doit-il y avoir des doublons.) P>

# Assums no duplicates    
def something(l):
    return (min(l), len(l)-1)

# Accounts for duplicates 
def betterthing(l):
    low = min(l)
    return (low, len(l) - len([x for x in l if x == low]))

l1 = [5,2,7,4,3,8]
print("{} is lowest & {} other items are larger.".format(*something(l1)))

l2 = [5,2,7,4,3,8,2,9,10,8]
print("{} is lowest & {} other items are larger.".format(*betterthing(l2)))


0 commentaires