使用List.map创建奇数列表

kin*_*nix 3 f#

我的教授让我们根据连续分数创建一系列与近似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的较小值.我也认为这违背了试图将数字映射到这些值的精神.有人可以给我一些关于从号码到列表表格的第一次翻译的指导吗?

Fyo*_*kin 5

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

let oneToSix = [1..6]
Run Code Online (Sandbox Code Playgroud)

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

  • 啊哈!我非常接近,但我从来不会知道使用该符号.我的功能只是返回一个空列表,因为,我正在传递一个空列表来映射到.现在我的地图跨越了[1..n]的列表.谢谢!let oddSquares n = List.map(fun x - >((x*2)-1))[1..n]将显示奇数组.我可以弄清楚如何为我的任务正确地改变它. (2认同)