2016-07-27 1 views
0

J'ai codé une fonction pour énumérer permutation pour une liste donnée, mais je ne peux pas comprendre pourquoi il retourne systématiquement une liste vide au lieu de permutations. Pouvez-vous m'aider à comprendre?Manquant quelque chose pour l'évaluation de cycle (scala)

def permutations(l: List[Any]): List[List[Any]] = l match { 
    case Nil => Nil 
    case head :: tail => for { 
    element <- l 
    permutationOfRest <- permutations(l.filter(x => x != element)) 
    } yield element :: permutationOfRest 
} 

Répondre

2

Le problème est d'abord case. Lorsque la liste d'entrée est vide, vous renvoyez une liste ou des permutations vides. Au lieu de cela, vous devriez retourner la liste sans permutation:

case Nil => List(Nil) 
+0

Merci beaucoup. Je suis souvent confondu avec map et flatmap – ilmirons