我写了一些代码来学习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