4
我對F#編程非常陌生。我正在尋找一個答案,爲什麼在達到n = 0條件時,下面的遞歸函數將會退出。 「then 1」語法是否具有等同於EXIT的特殊含義?F#遞歸函數退出?
let rec factorial n =
if n = 0
then 1
else n * factorial (n - 1)
我對F#編程非常陌生。我正在尋找一個答案,爲什麼在達到n = 0條件時,下面的遞歸函數將會退出。 「then 1」語法是否具有等同於EXIT的特殊含義?F#遞歸函數退出?
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'是一個表達式,函數中的最後一個表達式作爲返回值。 – ildjarn