F#递归函数退出?

时间:2016-07-22 21:35:47

标签: f#

我对F#编程很新。我正在寻找一个答案,为什么当达到n = 0条件时,下面的递归函数将退出。 “then 1”语法是否具有等同于EXIT的特殊含义?

let rec factorial n = 
    if n = 0 
    then 1 
    else n * factorial (n - 1)

1 个答案:

答案 0 :(得分:6)

函数式编程语言面向表达式,而不是面向语句。这意味着所有内容都是可以计算为值的表达式。

控制流结构ifmatch也只是表达式。编译器检查这些表达式的所有分支是否返回相同的类型。

如果您熟悉其他语言的条件三元运算符,F#的表达式if true then 1 else 0等同于true ? 1 : 0

此外,该功能不会“退出”。它完成了评估。函数的每个实例(将有n + 1个实例)在if / then / else表达式的末尾完成评估。

相关问题