design-patterns - 在 F# 中 float 的整数列表

标签 design-patterns f# match

我刚开始使用 FSharp 并有这个功课,希望有人能帮助我。 我必须编写一个程序,它接受一个整数列表并返回一个 float 。应按连分数计算。 所以如果 int 列表是 [4; 5; 6] float 将通过以下方式计算:4 + (1/(5 + 1/6) )

函数必须是递归的。 我写了以下内容:

let rec fractionDecimal (numberlist : int list) : float =
  match numberList with
    |[] -> 0.0
    | x :: y -> x + 1.0 / fractionDecimal y

它不起作用,因为 (fractionDecimal y) float 与 int 类型不匹配。 您对如何解决问题或如何使我的代码正常工作有任何建议吗? 提前致谢

最佳答案

问题是您试图将 1.0/fractionDecimal tail 的值(一个 float)添加到 head,一个 int

您可以使用 float 函数来补救这种情况。

let rec fractionDecimal (numberList : int list) : float =
    match numberList with
    | [] -> 0.0
    | head :: tail -> float head + 1.0 / fractionDecimal tail

这个 Microsoft 文档很好地描述了这里发生的事情:https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-messages/fs0001

关于design-patterns - 在 F# 中 float 的整数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64247845/

相关文章:

design-patterns - 如何编写布局管理器?

grails - Grails和DAO层概念

R 将数据框中的字符串更改为数字

EXCEL如何反向匹配以查找通配符

c++ - 使用任意类型的给定参数进行任意操作的任何建议?

c++ - 如何在 C++ 中实现强大的数据持久层?

F#:如何将一个序列分成一个序列

winforms - 如何强制 WinForms 控件填充 TableLayoutPanel 中多列跨单元格中的 FlowLayoutPanel?

f# - 匹配受歧视 child 的工会

javascript - 每次在字符串中找到匹配项时都会运行该函数