F#递归函数退出?

标签 f#

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

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

最佳答案

函数式编程语言是 面向表达 ,而不是面向语句。这意味着一切都是可以评估为值的表达式。

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

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

此外,该函数不会“退出”。它完成评估。函数的每个实例(会有 n + 1 个实例)在 if 结束时完成求值/then/else表达。

关于F#递归函数退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38535597/

相关文章:

F# 将映射输入写入输出

C# 到 F# : Creating and using a float[][] in F#

algorithm - Boggle - 计算 N*N 网格上的所有可能路径。表现

generics - 这种构造导致代码不像类型注释所指示的那么通用

haskell - Haskell 和 F# 之间的主要区别是什么?

f# - 为什么不识别指定值的模式匹配

f# - FSharp.Core 未优化?

f# - 递归记录定义中的匿名通用参数

f# - 如何在 F# Akka.NET Actor 中存储状态?

f# - Visual Studio F# 项目 : Can't have two folders in a file tree with the same name?