我寫了一些代碼來學習F#。 這裏有一個例子:Rfactor這個F#代碼到尾遞歸
let nextPrime list=
let rec loop n=
match n with
| _ when (list |> List.filter (fun x -> x <= (n |> double |> sqrt |> int)) |> List.forall (fun x -> n % x <> 0)) -> n
| _ -> loop (n+1)
loop (List.max list + 1)
let rec findPrimes num=
match num with
| 1 -> [2]
| n ->
let temp = findPrimes <| n-1
(nextPrime temp) :: temp
//find 10 primes
findPrimes 10 |> printfn "%A"
我很高興,這只是工作!
我完全初學者遞歸
遞歸是一件美妙的事情。我想findPrimes效率不高。
有人幫我重構findPrimes到尾遞歸如果可能?
順便說一句,有沒有更高效的方法來找到第n個素數?
我不確定他真的擔心得到質數;我認爲他對理解遞歸更感興趣。 – 2010-06-04 12:32:15
「generatePrimes」非常好。但是,我現在無法理解它。 我稍後會研究它。謝謝尹竺。 – kev 2010-06-04 15:11:20