Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 重复应用函数生成列表_F# - Fatal编程技术网

F# 重复应用函数生成列表

F# 重复应用函数生成列表,f#,F#,我现在有这个f#函数 collatz'n= 匹配 |n当n以“collatz”失败时:n为零或更小 |偶数n=true->n/2时为n |偶数n=false->3*n+1时为n 在F#?中解决以下问题的任何技巧如评论中所述,对于任何真正具体的建议,您需要提供更多的信息,但根据您所拥有的,我将添加以下内容 您声明的函数满足Collatz函数的定义,即偶数->n/2,以及 奇数->3n+1 所以你真的只需要applyN,让我们把它分解成几个部分 ( `a -> `a) -> `a -

我现在有这个f#函数

collatz'n=
匹配
|n当n以“collatz”失败时:n为零或更小
|偶数n=true->n/2时为n
|偶数n=false->3*n+1时为n

在F#?

中解决以下问题的任何技巧如评论中所述,对于任何真正具体的建议,您需要提供更多的信息,但根据您所拥有的,我将添加以下内容

您声明的函数满足Collatz函数的定义,即偶数->n/2,以及 奇数->3n+1

所以你真的只需要applyN,让我们把它分解成几个部分


( `a -> `a) -> `a -> int -> `a list
applyN f n N 
该定义向您显示了函数所期望的内容

让我们看看f到N

f->一个函数,它接受某个类型为“a”的值(在您的例子中可能是int),并生成一个类型为“a”的新值。 这对应于您已经编写的函数
collatz`

n->是您的种子值。我认为不需要详细阐述

N->这看起来是要执行的最大步骤数。在发布的示例中,如果N更大,您将看到一个循环[1;4;2;1;4…] 如果它更小,它会更快停止

这就是函数需要和需要做的,那么我们如何才能做到这一点呢

我建议利用这一点

scan函数很像fold,但它返回列表中的每个临时状态。 另一种选择是使用Seq.unfold,然后只取前几个值


现在,我可以继续并给出一些源代码,但我认为您现在应该自己尝试。

如评论中所述,您需要提供更多信息以获得任何真正具体的建议,但根据您所拥有的,我将添加以下内容

您声明的函数满足Collatz函数的定义,即偶数->n/2,以及 奇数->3n+1

所以你真的只需要applyN,让我们把它分解成几个部分


( `a -> `a) -> `a -> int -> `a list
applyN f n N 
该定义向您显示了函数所期望的内容

让我们看看f到N

f->一个函数,它接受某个类型为“a”的值(在您的例子中可能是int),并生成一个类型为“a”的新值。 这对应于您已经编写的函数
collatz`

n->是您的种子值。我认为不需要详细阐述

N->这看起来是要执行的最大步骤数。在发布的示例中,如果N更大,您将看到一个循环[1;4;2;1;4…] 如果它更小,它会更快停止

这就是函数需要和需要做的,那么我们如何才能做到这一点呢

我建议利用这一点

scan函数很像fold,但它返回列表中的每个临时状态。 另一种选择是使用Seq.unfold,然后只取前几个值


现在,我可以继续并给出一些源代码,但我认为您现在应该自己试试。

我假设您的
collatz
函数正在解决前面的一个问题,并且工作正常?如果是这样,您现在需要定义
applyN
函数。到目前为止,你做了什么来定义这一点?您在坚持什么?是的,我们需要了解您在创建
applyN
方面的努力和/或问题,然后才能提供任何有用的建议,请更新您的问题。我假设您的
collatz
功能正在解决前面的问题,并且工作正常?如果是这样,您现在需要定义
applyN
函数。到目前为止,你做了什么来定义这一点?您坚持什么?是的,我们需要了解您在创建
applyN
方面的努力和/或问题,然后才能提供任何有用的建议,请更新您的问题。