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