Bien qu'il y ait beaucoup d'informations sur la récursivité sur le web, je n'ai rien trouvé que je pouvais appliquer à mon problème. Je suis encore très novice en programmation alors excusez-moi si ma question est plutôt triviale.Python: récursion
Merci de nous aider à :)
C'est ce que je veux terminer par:
listVariations(listOfItems, numberOfDigits)
>>> listVariations(['a', 'b', 'c'], 1)
>>> ['a', 'b', 'c']
>>> listVariations(['a', 'b', 'c'], 2)
>>> ['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc']
>>> listVariations(['a', 'b', 'c'], 3)
>>> ['aaa', 'aab', 'aac', 'aba', 'abb', 'abc', 'aca', 'acb', 'acc', 'baa', 'bab', 'bac', 'bba', 'bbb', 'bbc', 'bca', 'bcb', 'bcc', 'caa', 'cab', 'cac', 'cba', 'cbb', 'cbc', 'cca', 'ccb', 'ccc']
, mais jusqu'à présent, je ne ai pu arriver à une fonction où je dois préciser/connaître le nombre de chiffres à l'avance. Ce qui est laid et le mal:
list = ['a', 'b', 'c']
def listVariations1(list):
variations = []
for i in list:
variations.append(i)
return variations
def listVariations2(list):
variations = []
for i in list:
for j in list:
variations.append(i+j)
return variations
def listVariations3(list):
variations = []
for i in list:
for j in list:
for k in list:
variations.append(i+j+k)
return variations
oneDigitList = listVariations1(list)
twoDigitList = listVariations2(list)
threeDigitList = listVariations3(list)
Ceci est probablement très facile, mais je ne pouvais pas trouver une bonne façon de concaténer les chaînes lorsque la fonction elle-même appelle.
Merci pour votre effort :)
Vous devriez vraiment pas utiliser 'list' comme nom de variable. C'est le constructeur de la classe 'list' intégrée et quand vous faites cela, vous l'ombrez. – aaronasterling
point pris - ne se reproduira plus ... – TIM