使用List.map创建奇数列表

时间:2018-06-08 01:48:28

标签: f#

我的教授让我们根据连续分数创建一系列与近似pi和e相关的函数。为了进行设置,他让我们创建一个函数,它接受一个整数并映射许多奇数的平方,从1开始。例如,这是所需的行为:

oddSquares 6;; 
val it : int list = [1.0; 9.0; 25.0; 49.0; 81.0; 121.0]

我可以看到一个映射可能会用于对列表中的所有值进行平方,但我无法找到将数字映射到数字列表的方法。我不想让任何人为我编写代码,但有条不紊地说,当我组装基本列表时,我想做什么?

感觉最好的方法是向后工作,从6个术语的基数开始。然后我们评估第6个奇数项(实际上是11或2x-1),但随后需要一些递归方法来继续评估oddSquares的较小值。我也认为这违背了试图将数字映射到这些值的精神。有人可以给我一些关于从号码到列表表格的第一次翻译的指导吗?

1 个答案:

答案 0 :(得分:5)

F#为创建连续数字列表提供了特殊的整洁语法:

let oneToSix = [1..6]

这是一个名为" list comprehension"的特例。它们可能比连续数字更复杂 - 它们可以包括多个生成器,滤波器,投影,笛卡尔积等。特别是,生成前N个奇数的整个任务可以表示为一个列表理解。但是,既然你明确要求不为你编写代码,我就赢了。

相关问题