F中的嵌套函数#
问题描述:
答
- 将
fact
的函数体移至新行。确保它是缩进的。 - 在
fact
声明与刚移动的函数体之间添加一个空行。 -
剪切整个定义为
fun
和粘贴它到你在第二步创建的空行。 - 缩进复制的代码,使之成为
fact.
答
所有你需要做的是移动的递归函数f
到fact
内,然后调用它的本地功能。它将使用传递给fact
的参数:
let fact n =
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
f n 2 []
fact 315
//val it : int list = [7; 5; 3; 3]
'fun'不能用作F#的标识符,因为它是一种很常见的关键字。 – TeaDrivenDev
这甚至没有编译。首先,'fun'是一个关键字。其次,“f”和“a”从哪里来? – nphx
'f'与'fun'可能是一样的东西。 – TeaDrivenDev