【发布时间】:2016-11-09 21:33:07
【问题描述】:
我有一个简单的函数,它列出了给定输入数字的每个素因子。它由以下人员组成:
let rec f n x a =
if x = n then
x::a
elif n % x = 0 then
f (n/x) x (x::a)
else
f n (x+1) a
let fact n = f n 2 []
fact 315
val factors : int list = [7; 5; 3; 3]
它可以工作,但我想把它变成一个函数:我如何定义 fact 和直接嵌套的 f?我试图应用出色地表达的概念here,但我未能抽象出如何将一个三参数函数(f)嵌套在一个参数一(fact)中。
【问题讨论】:
-
fun不能用作 F# 中的标识符,因为它是一个非常常见的关键字。 -
这甚至不能编译。首先,
fun是一个关键字。二、f和a从何而来? -
f可能与fun相同。 -
我想
a应该是q。 -
@TeaDrivenDev 这就是我最初的想法,但它会导致不同的输出:[-1; -105; 3]。并且需要一段时间来计算。 :P