我对 F# 编程很陌生。我正在寻找有关为什么在达到 n=0 条件时以下递归函数将退出的答案。 “then 1”语法是否具有等同于 EXIT 的特殊含义?
let rec factorial n =
if n = 0
then 1
else n * factorial (n - 1)
最佳答案
函数式编程语言是 面向表达 ,而不是面向语句。这意味着一切都是可以评估为值的表达式。
控制流结构,if
和 match
, 也只是表达式。编译器检查这些表达式的所有分支是否返回相同的类型。
如果您熟悉其他语言中的条件三元运算符,F# 的表达式 if true then 1 else 0
, 相当于 true ? 1 : 0
.
此外,该函数不会“退出”。它完成评估。函数的每个实例(会有 n + 1
个实例)在 if
结束时完成求值/then
/else
表达。
关于F#递归函数退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38535597/