【问题标题】:F# recursive function exit?F#递归函数退出?
【发布时间】:2016-07-22 21:35:47
【问题描述】:

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

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

【问题讨论】:

  • if是一个表达式,函数中的最后一个表达式作为返回值。

标签: f#


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-28
    • 2020-04-28
    • 2021-11-18
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 2018-07-29
    相关资源
    最近更新 更多