我有一个非常奇怪的问题.这是我简单的递归代码:
let float2cfrac x =
let rec tofloat (lst : int list) (xi : float) =
let qi = floor xi
let ri = xi-qi
printfn "%A %A %A %A" xi qi ri (1.0/ri)
if ri > (floor 0.0) then
tofloat (lst @ [int qi]) (1.0/ri)
else
lst
tofloat [] x
Run Code Online (Sandbox Code Playgroud)
我不会解释我的代码太多,因为我所拥有的问题似乎很基本.printfn将打印xi和qi,其中qi只是xi的底限.在查看输出时,看起来一旦软件达到xi的舍入数字,floor函数就会删除1,而不是什么都不做.
这是我的数字3.245的输出,它应该在几次计算后完成计算:
float2cfrac 3.245 ;;
3.245 3.0 0.245 4.081632653
4.081632653 4.0 0.08163265306 12.25
12.25 12.0 0.25 4.0
4.0 3.0 1.0 1.0 - 这里搞砸了.4.0的楼层应该是4,对吗?
1.0 1.0 4.035882739e-12 2.477772682e + 11 …
我正在使用 collection.FindOneAndDeleteAsync,但这在用于获取许多文档时会使用大量 CPU。使用 c# mongo 驱动程序查找多个文档(从 100 到 50k 的任何位置)并删除的最佳方法是什么?
谢谢