J'essaie d'écrire une fonction de récursivité en Python et après qu'un appel, il lève l'index hors de la liaison. Cependant, je ne suis pas capable de désactiver pourquoi?
Quelqu'un pourrait-il m'aider à comprendre? p>
4 Réponses :
Tout d'abord, renommez votre chaîne et votre char. Maintenant, vous surchargez Votre erreur provient du fait qu'une fois que vous avez supprimé les éléments de la chaîne, des index correspondant à ce dernier Les valeurs dans sa vieille longueur ne seront plus disponibles p> sorties p> comme vous pouvez le voir, index de liste str () code> et
chr () code>
1 code> est hors de portée p> p>
Regardez ce que vous faites: Considérez une chaîne de 4 caractères. I STR P> 0 ABCD
1 ABC
2 AB
... et la prochaine fois que vous essayez d'accéder à garder la chaîne d'origine intacte; Envoyez juste le tronqué dans la récursion: p> Vous avez toujours des problèmes logiques dans votre programme, mais cela vous permettra de passer à l'étape suivante. Je vous recommande vivement de faire trois choses: p>
str [i] code>, la chaîne est trop courte. p>
Vous n'avez pas besoin du il suffit de remplacer le Cela fera ce que vous voulez. p> pour code> ligne. Vous pouvez le supprimer. P>
chr = str [i] code> avec
chr = str [0] code> et renommez vos variables comme indiqué dans les messages précédents (
chr code> et
str code>). p>
Vous pouvez toujours utiliser iTertools.permutations qui est une fonction de python fournie. L'exemple ci-dessous génère des permutations prenant les 4 caractères en compte
Si vous raccourcissez
STR code> mais gardez itérant jusqu'à la longueur de l'original
str code> bien sûr, vous sortirez des limites.
Voulez-vous des permutations ou des combinaisons?
@Deveshkumarsingh permutation. Désolé pour le mauvais nom de méthode.
Dans ce cas, c'est une doublure, vérifiez ma réponse ci-dessous!