我对F#编程很新.我正在寻找一个答案,为什么当达到n = 0条件时,下面的递归函数将退出."then 1"语法是否具有等同于EXIT的特殊含义?
let rec factorial n =
if n = 0
then 1
else n * factorial (n - 1)
Run Code Online (Sandbox Code Playgroud)
函数式编程语言是面向表达式的,而不是面向语句的.这意味着一切都是可以计算为值的表达式.
控制流结构,if并且match,也只是表达.编译器检查这些表达式的所有分支是否返回相同的类型.
如果你熟悉其他语言的条件三元运算符,F#的表达式if true then 1 else 0就相当于true ? 1 : 0.
此外,该功能不会"退出".它完成了评估.函数的每个实例(将有n + 1实例)在if/ then/ else表达式的末尾完成评估.