我正在尝试实现一个递归函数,它接受一个浮点数并返回一个整数列表,表示浮点数的连分数表示(https://en.wikipedia.org/wiki/Continued_fraction)一般我想我理解算法是如何应该工作。它相当简单。我到目前为止是这样的:
let rec float2cfrac (x : float) : int list =
let q = int x
let r = x - (float q)
if r = 0.0 then
[]
else
q :: (float2cfrac (1.0 / r ))
问题显然与基本情况有关。似乎 r 的值永远不会减少到 0.0,而是算法继续返回类似于 0.0 .....[number] 的值。我只是不确定如何进行比较。我到底应该怎么做。该函数所基于的算法说基本情况是 0,所以我自然将其解释为 0.0。我没有看到任何其他方式。另外,请注意这是一个任务,明确要求我递归地实现算法。有人对我有一些指导吗?将不胜感激