我的教授让我们用F#实现笛卡尔积.他正在为我们提供一种类型:
type SET =
| I of int list // I [1;2;3]
| S of string list // S ["a";"b";"c"]
| IS of (int * string) list // IS [(1, "a");(2, "b")]
| II of (int * int) list // II [(1,2); (3,4); (5,6)]
| SS of (string * string) list // SS [("a","b"); ("c","d")]
| SI of (string * int) list // SI [("a", 1); ("b", 2); ("c", 3)]
| SISI of ((string * int) * (string * int)) …Run Code Online (Sandbox Code Playgroud) 我的教授让我们根据连续分数创建一系列与近似pi和e相关的函数.为了进行设置,他让我们创建一个函数,它接受一个整数并映射许多奇数的平方,从1开始.例如,这是所需的行为:
oddSquares 6;;
val it : int list = [1.0; 9.0; 25.0; 49.0; 81.0; 121.0]
Run Code Online (Sandbox Code Playgroud)
我可以看到一个映射可能会用于对列表中的所有值进行平方,但我无法找到将数字映射到数字列表的方法.我不想让任何人为我编写代码,但有条不紊地,我在组装基本列表时想要做什么?
感觉最好的方法是从6个术语的基数开始向后工作.然后我们评估第6个奇数项(实际上是11或2x-1),但随后需要一些递归方法来继续评估oddSquares的较小值.我也认为这违背了试图将数字映射到这些值的精神.有人可以给我一些关于从号码到列表表格的第一次翻译的指导吗?
f# ×2