我正在尝试编写一个程序来计算三角形.对于这个计算,有人能给我一个F#sharp的简短代码吗?

这是我到目前为止所做的,但我不相信这是最好的方法:
let area a b c =
let s = sqrt((a + b + c) / 2)
sqrt(s * (s - a) * (s - b) * (s - c))
Run Code Online (Sandbox Code Playgroud)
您似乎正在尝试根据您拥有的三角形类型应用不同的公式.如果你有三个边使用苍鹭的公式,如果你有一边你假设三角形是等边的,如果你有两边你假设三角形是正确的,而两边是导管.如果我正确解释,我会定义一个有区别的联合,如下所示:
type Triangle =
| Generic of float * float * float
| Equilateral of float
| Right of float * float
let area (t : Triangle) : float =
match t with
| Generic (a, b, c) -> let s = (a + b + c) / 2.
sqrt(s*(s-a)*(s-b)*(s-c))
| Equilateral a -> sqrt(3.) * (a ** 2.) / 4.
| Right (a, b) -> (a * b) / 2.
// testing
let triangles = [Generic (2., 3., 4.); Equilateral 2.; Right (2., 3.)]
triangles |>
List.iter (fun t -> Console.WriteLine(area t))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
383 次 |
| 最近记录: |