2016-07-27 69 views
0

我編寫了一個函數枚舉給定列表的排列,但我不明白爲什麼它一貫返回一個空列表,而不是排列。 你能幫我理解嗎?缺少的東西在循環評估(斯卡拉)

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 
} 

回答

2

問題出在第一個case。當輸入列表爲空時,您將返回一個空列表或排列。而不是它,你應該返回列表沒有排列:

case Nil => List(Nil) 
+0

非常感謝。我經常對map和flatMap感到困惑 – ilmirons