F# 参数定义在哪里
这是F中阶乘函数的一个简单实现# 1.F# 参数定义在哪里,f#,F#,这是F中阶乘函数的一个简单实现# 1.rec单词在这里的作用是什么 2-事实是函数,但从来没有提到它可以有一个参数。 所以从技术上讲,它应该面临一个错误,因为在签名中 (let rec fact)没有为其定义参数。 那么它是如何工作的呢?1)rec用于将函数标记为递归函数。如果没有它,您将无法从函数实现中调用它。更多有关MSDN的信息: 2) let rec fact=function是以下各项的快捷方式: let rec fact argument = match argument wi
rec
单词在这里的作用是什么
2-事实是函数,但从来没有提到它可以有一个参数。
所以从技术上讲,它应该面临一个错误,因为在签名中
(let rec fact
)没有为其定义参数。
那么它是如何工作的呢?1)rec
用于将函数标记为递归函数。如果没有它,您将无法从函数实现中调用它。更多有关MSDN的信息:
2) let rec fact=function
是以下各项的快捷方式:
let rec fact argument =
match argument with
| 0 -> 1
| n -> n * fact (n-1)
如您所见,有一个单独的参数,它与提供的条件匹配
它被称为模式匹配函数(pattern matching function),在MSDN:上被描述为一个警告:虽然这是递归101,但它是事实上最糟糕的实现之一(非常慢,会破坏堆栈…)-这里有一个更好的:
让事实n=List.fold(*)1[1..n]
我认为这里令人恼火的一件事是函数
关键字,它与它的实际功能完全不对应。
let rec fact argument =
match argument with
| 0 -> 1
| n -> n * fact (n-1)