2016-07-27 8 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

ありがとうございました。私はしばしば地図とフラットマップと混同します – ilmirons

関連する問題