我非常新手F#编程。 我想知道为什么以下递归函数将在达到n = 0条件时退出。 "then 1"语法是否有特殊含义,相当于EXIT?
我对F#编程非常陌生。当n=0时,下面的递归函数为什么会停止运行呢?“then 1”语法是否有特殊含义,相当于退出?
let rec factorial n =
if n = 0
then 1
else n * factorial (n - 1)
我非常新手F#编程。 我想知道为什么以下递归函数将在达到n = 0条件时退出。 "then 1"语法是否有特殊含义,相当于EXIT?
我对F#编程非常陌生。当n=0时,下面的递归函数为什么会停止运行呢?“then 1”语法是否有特殊含义,相当于退出?
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
表达式的末尾完成计算。