这次轮到我要请求帮助啦,希望能有人能回答下我这个问题,到底下面这段函数的作用和运行次序是怎样的? perms() -> [[]]; perms([X|Xs]) -> [inser(X,As,Bs)||Ps <- perms(Xs),{As,Bs} <- splits(Ps)]. splits([]) -> [{[],[]}]; splits([X|Xs] = Ys) -> [ {[] , Ys} | [{ [X | As] , Bs } || {As , Bs} <- splits(Xs) ] ]. insert(X,As,Bs) -> lists:append( [As , [X] , Bs] ). 希望有人能回答我吧!如果没有,那这次也当是留给将来的我来解! 而下面这段代码我就看得懂 qsort([]) -> [] ; qsort([X | Xs]) -> qsort([Y || Y <- Xs, Y =< X]) ++ [X] ++ qsort([Y || Y <- Xs, Y > X]). 大概是取头部作为支点,然后利用生成器 Xs分成两段列表(一段比X大,一段比X少),再分别递归这两段列表,最终得出一个从大到少的列表,就像c/c++的快速排序的算法,大家不清楚可以百度下。
|